美文网首页让前端飞Web前端之路前端开发
js面试题大坑——隐式类型转换

js面试题大坑——隐式类型转换

作者: 特立独行的兔子_web | 来源:发表于2019-06-04 19:37 被阅读11次
    • 坑一:字符串连接符与算术运算符隐式转换规则混淆

    • 坑二:关系运算符:会把其他数据类型转换成number之后再比较关系

    • 坑三:复杂数据类型在隐式转换时会先转成String,然后再转成Number运算

    • 坑四:逻辑非隐式转换与关系运算符隐式转换搞混淆

    20180702222841413.png

    练习题:

    // 每个表达式是 true 还是 false 呢?为啥呢?
    
    // 初阶
    !{}
    12 == '12'
    'false' == false
    null == undefined
    
    // 高阶
    [] == []
    [] == false
    [] === false
    [45] == 45
    
    // 终阶
    [45] < [46] ?
    [10] < [9] ?
    {} == !{}
    {} != {}
    -0 === +0
    NaN === NaN
    NaN != NaN
    
    // 转换条件 转换后类型 结果
    []+[] // String “”
    [1,2]+[3,4] // String “1,23,4”
    []+{} // String “[object Object]”
    [1,2] + {a:1} // String “1,2[object Object]”
    {}+[] // Number 0
    {}+[1] //Number 1
    {a:1}+[1,2] // Number NaN
    {a:1}+{b:2} // Chrome - String “[object Object][object Object]” (背后实现eval)
    {a:1}+{b:2} // Firefox - Number NaN
    true+true // Number 2
    1+{a:1} // String “1[object Object]”

    相关文章

      网友评论

        本文标题:js面试题大坑——隐式类型转换

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