美文网首页
Boolean和自动转换

Boolean和自动转换

作者: 风起云帆 | 来源:发表于2017-07-12 10:38 被阅读0次

    Boolean

    它的转换规则相对简单:除了以下6个类型转换为false,其他均转换为true

    undefined
    null
    0  +0  -0
    NaN
    ' ' //空字符串
    

    注意
    所有对象(包括空对象)的Boolean转换都为true,并且false对应的布尔对象也为true!
    例:
    Boolean(new Boolean(false)) 也为true

    自动转换为字符串

    当JavaScript遇到预期为字符串的地方,就会将非字符串的数据自动转为字符串。系统内部会自动调用String函数。

    字符串的自动转换,主要发生在加法运算时。当一个值为字符串,另一个值为非字符串,则后者转为字符串。

    '5' + 1 // '51'
    '5' + true // "5true"
    '5' + false // "5false"
    '5' + {} // "5[object Object]"
    '5' + [] // "5"
    '5' + function (){} // "5function (){}"
    '5' + undefined // "5undefined"
    '5' + null // "5null"
    

    这种自动转换很容易出错。

    var obj = {
      width: '100'
    };
    
    obj.width + 20 // "10020"
    

    上面代码中,开发者可能期望返回120,但是由于自动转换,实际上返回了一个字符10020。

    自动转换为数值

    当JavaScript遇到预期为数值的地方,就会将参数值自动转换为数值。系统内部会自动调用Number函数。

    除了加法运算符有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值。

    '5' - '2' // 3
    '5' * '2' // 10
    true - 1  // 0
    false - 1 // -1
    '1' - 1   // 0
    '5' * []    // 0
    false / '5' // 0
    'abc' - 1   // NaN
    

    上面代码中,运算符两侧的运算子,都被转成了数值。

    一元运算符也会把运算子转成数值。

    +'abc' // NaN
    -'abc' // NaN
    +true // 1
    -false // 0
    

    相关文章

      网友评论

          本文标题:Boolean和自动转换

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