[] == ![]

作者: 前端阿良古 | 来源:发表于2019-12-27 17:18 被阅读0次

    问题

    [] == ![]; // true or false
    

    答案

    [] == ![]; // true
    

    理解

    题目所述,分三步理解

    1. "!" 运算符优先级比 "==" 高,先运算,右边运算结果为 false,故
    [] == false
    
    1. 其中一边有 Bool 值作比较,先转为 number 类型,故:
    [] == 0
    
    1. 一边有 number 型作比较,先把另一边转换成 number 类型,故:
    0 == 0; // true
    

    总结

    1. 类型相同:都是引用类型为 false,不是引用类型,判断两边是否恒等。
    2. null == undefined ? 涉及 null 和 undefined 的,只有这个为 true,其他都为 false。(当然,自身和自身比较那肯定是 true,它们又不像 NaN 那么六亲不认)
    3. 一边为 Symbol 的,都为 false。
    4. 一边为 number 型的,把另一边强转(使用 Number())成 number 型再比较是否恒等。
    5. 一边为 boolean 类型的,把 boolean 类型先转换成 number 型,再执行第 4 条。

    之前写过一篇相关的文章:对于'=='的思考

    相关文章

      网友评论

          本文标题:[] == ![]

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