美文网首页
JS 里的数据类型转换

JS 里的数据类型转换

作者: wxy1107 | 来源:发表于2019-10-16 20:29 被阅读0次

    转Boolean

    在条件判断时,除了 undefinednullfalseNaN''0-0,其他所有值都转为 true,包括所有对象。

    对象转基本类型

    对象在转换基本类型时,首先会调用 valueOf 然后调用 toString。并且这两个方法你是可以重写的。

    let a = {
        valueOf() {
            return 0
        }
    }
    
    

    当然你也可以重写 Symbol.toPrimitive ,该方法在转基本类型时调用优先级最高。

    let a = {
      valueOf() {
        return 0;
      },
      toString() {
        return '1';
      },
      [Symbol.toPrimitive]() {
        return 2;
      }
    }
    1 + a // => 3
    '1' + a // => '12'
    
    

    四则运算符

    只有当加法运算时,其中一方是字符串类型,就会把另一个也转为字符串类型。其他运算只要其中一方是数字,那么另一方就转为数字。并且加法运算会触发三种类型转换:将值转换为原始值,转换为数字,转换为字符串。

    1 + '1' // '11'
    2 * '2' // 4
    [1, 2] + [2, 1] // '1,22,1'
    // [1, 2].toString() -> '1,2'
    // [2, 1].toString() -> '2,1'
    // '1,2' + '2,1' = '1,22,1'
    

    == 操作符

    可以叫做玄学运算符

    这里来解析一道题目 [] == ![] // -> true ,下面是这个表达式为何为 true 的步骤

    // [] 转成 true,然后取反变成 false
    [] == false
    // 根据第 8 条得出
    [] == ToNumber(false)
    [] == 0
    // 根据第 10 条得出
    ToPrimitive([]) == 0
    // [].toString() -> ''
    '' == 0
    // 根据第 6 条得出
    0 == 0 // -> true
    

    相关文章

      网友评论

          本文标题:JS 里的数据类型转换

          本文链接:https://www.haomeiwen.com/subject/pnxpmctx.html