为什么会!{}[true] 在 JavaScript 中 evaluate to true?
2022-08-30 04:31:47
{}[true]
是 并且应该是 。[true]
![true]
false
那么,为什么会评估到呢?!{}[true]
true
{}[true]
是 并且应该是 。[true]
![true]
false
那么,为什么会评估到呢?!{}[true]
true
我相信这是因为 plain 被解析为一个空的语句块(不是对象文本),后跟一个包含 的数组,即 。{}[true]
true
true
另一方面,应用运算符会使解析器解释为对象文本,因此以下内容成为返回的成员访问,并且确实是(如 是)。!
{}
{}[true]
undefined
!{}[true]
true
!undefined
true
因为 不返回 ,但是 ,并且计算为:{}[true]
true
undefined
undefined
false
'use strict';
var b = {}[true];
alert(b); // undefined
b = !{}[true];
alert(b); // true