Ecmascript:`GetValue([])` 的结果是什么?
Ecmascript: what is the result of `GetValue([])`?
当我试图理解为什么 Javascript 中的这个 ![]
表达式是 false
时,我卡住了。我知道 []
被认为是真实的,而 !true
是 false
但我想更深入地研究。
根据 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 就是那个普通值 - 在你的例子中是数组。否则它将评估对标识符(在变量范围内)或 属性(在对象中)的引用,但在您的示例中并非如此。
当我试图理解为什么 Javascript 中的这个 ![]
表达式是 false
时,我卡住了。我知道 []
被认为是真实的,而 !true
是 false
但我想更深入地研究。
根据 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 就是那个普通值 - 在你的例子中是数组。否则它将评估对标识符(在变量范围内)或 属性(在对象中)的引用,但在您的示例中并非如此。