我正在玩Rhino并注意到这种奇怪的行为似乎是运算符优先级:
js> {}+{}
NaN
js> ''+{}+{}
[object Object][object Object]
js> ''+({}+{})
[object Object][object Object]
Run Code Online (Sandbox Code Playgroud)
我希望表达式''+({}+{})可以评估"NaN",因为{}+{}应该首先进行评估,但这不会发生.我在V8和Firefox中对此进行了测试并获得了相同的结果.
为什么Javascript在这种情况下不遵循括号中的标准优先级(4*(1+2)仍然是预期的12)?
plain {}被视为块语句,因此您的代码实际上是:
{
//empty block
}
+{}; //Convert object to number
Run Code Online (Sandbox Code Playgroud)
我应该解释一下简单的意思:
它表示{}在语句上下文中.({})是一个对象,因为括号不能包含语句,它们只能包含表达式.
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |