Ecmascript:`GetValue([])` 的结果是什么?

Ecmascript: what is the result of `GetValue([])`?

当我试图理解为什么 Javascript 中的这个 ![] 表达式是 false 时,我卡住了。我知道 [] 被认为是真实的,而 !truefalse 但我想更深入地研究。

根据 Spec 一元 NOT 运算符的工作方式如下: Let oldValue be ToBoolean(GetValue(expr)). If oldValue is true, return false.

然后我试图理解 GetValue([]),但现在一切都很模糊。 Spec sec-8.7.1

GetValue([]) 只是 returns [].valueOf() 吗?

在同一页面上,请参阅 8.7.1 了解如何实现 GetValue:

https://www.ecma-international.org/ecma-262/5.1/#sec-8.7.1

(与valueOf无关)

根据规范计算 GetValue([]),然后根据结果计算 ToBoolean。

GetValue 用普通值调用(不是 Reference) returns 就是那个普通值 - 在你的例子中是数组。否则它将评估对标识符(在变量范围内)或 属性(在对象中)的引用,但在您的示例中并非如此。