我在网上找到了一个有趣的JavaScript问题。这是+!{}[0]
等于什么?
答案让我感到惊讶,原来是1
。
现在我试图理解为什么会出现这种语法。
这就是为什么我试图将其分解
!{}
返回false
false[0]
返回undefined
+false[0]
返回NaN
所以我无法理解为什么上面的表达会回归1.任何理论?
答案 0 :(得分:9)
答案 1 :(得分:0)
我认为你不能像你那样打破这个,因为javascript有自己的规则,就像每个逻辑系统一样 我想,第一件事就是{}。这创造了一个中立的对象。在下一步[0]应该发生,所以它需要对象的第一个“元素”,而不是可能将作为emtpy数组处理。 这将被强制转换为False,并用“!”反转。 由于+期望一个整数,而true是非数字,它将被处理为零,在这种情况下增加“+”,因此最终结果为1.