这个词[0] == ![0]意味着什么?虽然他们返回true.但我需要解释它true是如何返回的,因为[0]的类型是对象而且![0]返回布尔值?那他们是如何平等的呢?谢谢
![0]很简单false,因为所有非null对象都被投射到了true.
当比较[0]和false,它们被转换为数字-不要问为什么,这只是事情是这样的.[0]首先转换为字符串"0"(通过将条目与,分隔符连接而转换为字符串的数组),然后是数字0.false被转换为数字0,并且你拥有它:[0] == ![0]相当于0 == 0,这是真的.
要理解这一点,![0]首先要通过表达式.它的计算结果为false:as [0](与JS中的任何Object一样)是一个真值.所以声明变成......
[0] == false
现在它更容易:false转换为0(对于布尔 - >数字规则),[0]并由对象到原始规则转换 - 首先转换为'0'(字符串),然后转换为0(数字).很显然,0 是等于0.)
PS是的,它可能看起来很奇怪,但两者......
[0] == false
......而且......
![0] == false
...评价true:前者已经解释过,后者只是false == false.还有人对这些==Lint警告感到惊讶吗?)