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

问题描述 投票:0回答:2

当我试图理解为什么这个![]在Javascript中的表现是false时,我已经卡住了。据我所知,[]被认为是真正的,!truefalse,但我想深入了解。

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

然后我试着了解GetValue([]),现在一切都模糊了。 Spec sec-8.7.1

GetValue([])只返回[].valueOf()吗?

javascript specifications
2个回答
1
投票

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


0
投票

在同一页面上,有关如何实现GetValue的说明,请参见8.7.1:

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

(它与valueOf无关)

评估GetValue([]),然后根据规范评估结果的ToBoolean。

© www.soinside.com 2019 - 2024. All rights reserved.