需要解释术语 [0] == ![0].

  • 本文关键字:解释 术语 javascript
  • 更新时间 :
  • 英文 :


术语[0] == ![0]是什么意思?虽然他们true返回.但是我需要解释它如何返回true因为 [0] 的类型是对象和![0] 返回布尔值?那么他们是如何平等的呢?谢谢

![0]只是false,因为所有非null的对象都投射到true

比较[0]false时,它们被转换为数字 - 不要问为什么,就是这样。 [0]首先转换为字符串"0"(通过将条目与分隔符的,连接来转换为字符串的数组),然后是数字0false被投射到数字 0 上,你得到它:[0] == ![0] 等价于 0 == 0 ,这是真的。

要理解这一点,请先浏览![0]表达式。它的计算结果为 false - 因为[0](与 JS 中的任何对象一样)是一个真实值。所以声明变成了...

[0] == false

现在它更容易了:false转换为0(对于布尔值 -> 数字规则),[0]通过对象到基元规则进行转换 - 首先转换为'0'(字符串),然后转换为0(数字)。显然,0等于0.)

附言是的,这可能看起来很奇怪,但两者都...

[0] == false

。和。。。

![0] == false

。评估true:前者已经解释过了,后者只是false == false。有人仍然对那些== Lint 警告感到惊讶吗?)

您已将表达式拆分为多个部分:

typeof([0]) // "object"
[0] == true // false
![0] == true // false
![0] == false // true

这是因为在 JavaScript 中只有值1被隐式转换为 true,因此所有其他值都转换为 false。![0]只否定一个错误的表达式,因此它变得(false == false) == true

最新更新