相关疑难解决方法(0)

为什么`(foo)="bar"在JavaScript中合法?

在Node.js的REPL中(也在SpiderMonkey中测试)序列

var foo = null;
(foo) = "bar";
Run Code Online (Sandbox Code Playgroud)

是有效的,foo随后等于"bar"相反null.

这似乎违反直觉,因为人们会认为括号至少会取消引用bar在赋值中抛出无效的左侧.

可以理解的是,当你做任何有趣的事情时,它确实以上述方式失败了.

(foo, bar) = 4
(true ? bar : foo) = 4
Run Code Online (Sandbox Code Playgroud)

根据ECMA-262关于LeftHandExpressions(据我可以解释),没有有效的非终端会导致括号被接受.

有什么我没看到的吗?

javascript ecma

46
推荐指数
2
解决办法
2549
查看次数

标签 统计

ecma ×1

javascript ×1