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

时间:2018-03-24 18:38:47

标签: javascript specifications

当我试图理解为什么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()吗?

2 个答案:

答案 0 :(得分:1)

用普通值调用的

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

答案 1 :(得分:0)

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

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

(它与valueOf无关)

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