zoukankan      html  css  js  c++  java
  • 对于a 可以同时 == 1 && == 2 && == 3吗的个人详解

    类型转换时的劫持
      首先我们要知道,JS类型转换只有以下3种情况,分别是:

    • 转换为布尔值
    • 转换为数字
    • 转换为字符串

    转换为原始类型

    其算法如下:

    1. 如果已经是 原始类型,则返回当前值;
    2. 如果需要转 字符串 则先调用toString()方法,如果此时是 原始类型 则直接返回,否则再调用valueOf()方法并返回结果;
    3. 如果不是 字符串,则先调用 valueOf()方法,如果此时是 原始类型 则直接返回,否则再调用toString()并返回结果;
    4. 如果没有 原始类型 返回,则抛出 TypeError类型错误;

    答案如下:

     1 ==会进行隐式类型转换
     2 
     3 var a = {
     4     arr : [3,2,1],
     5     toString () {
     6         return this.arr.pop()
     7     }
     8 }
     9 if (a == 1 && a == 2 && ab == 3){
    10     console.log('成功了')
    11 }
    12 
    13 
    14 var b = {
    15     arr : [3,2,1],
    16     toString () {
    17         return this.arr.pop()
    18     }
    19 }
    20 if (b == 1 && b == 2 && b == 3){
    21     console.log('成功了')
    22 }
    23 
    24 var c = {
    25   i: 1,
    26   toString() {
    27     return c.i++;
    28   }
    29 }
    30 
    31 if( c == 1 && c == 2 && c == 3 ) {
    32   console.log(1);
    33 }
    34 
    35 
    36 Object.defineProperty(window, 'd', {
    37   get: function() {
    38     return this.value = this.value ? (this.value += 1) : 1;
    39   }
    40 });
    41 if (d == 1 && d == 2 && d == 3){
    42     console.log('成功了')
    43 }
  • 相关阅读:
    计算机执行程序代码的过程分析
    iOS 操作系统架构
    ios 概况了解
    android ApplicationContext Context Activity 内存的一些学习
    android 内存优化一
    android 学习
    ios 基础学习二
    ios 集合总结
    线程之间的通讯---SynchronizationContext
    ASP.NET Core 身份验证及鉴权
  • 原文地址:https://www.cnblogs.com/chailuG/p/11215554.html
Copyright © 2011-2022 走看看