美文网首页
[] == false 和 !![] == true

[] == false 和 !![] == true

作者: refire_zj | 来源:发表于2019-10-08 23:05 被阅读0次

首先,大家应该都知道==和===的区别:==是相等操作符,先转换(具体转换规则可以参阅红皮书)再比较;===是全等操作符,仅比较不转换。

1、[] == false

右侧布尔值很简单,直接转换成0 

[]不是基本数据类型,它是对象,所以需要调用valueOf方法(Array.prototype.valueOf(),但是Array没有实现valueOf方法,所以根据原型链,最终调用的是Object.prototype.valueOf): 

[].valueOf() 

得到的仍然是[],继续调用toString方法(Array.prototype.toString()): 

[].toString()

得到""

""作为基本数据类型直接调用Number("")得到0 

所以最终结果是true

2、!![] == true

!!比==的优先级更高,所以先看!![]: 

![]得到false(操作数是对象的话逻辑非返回false),

然后再取非,得到true

很明显,true == true得到的结果是true

相关文章

网友评论

      本文标题:[] == false 和 !![] == true

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