Tag: ecma

为什么在JavaScript中合法使用((foo)=“bar”)?

在Node.js的REPL(也在SpiderMonkey中testing)序列 var foo = null; (foo) = "bar"; 是有效的, foo随后等于"bar"而不是null 。 这似乎是违反直觉的,因为人们会认为括号至less会解除引用,并且在赋值时抛出无效的左手边 。 可以理解的是,当你做任何有趣的事时,都会以上述方式失败。 (foo, bar) = 4 (true ? bar : foo) = 4 根据LeftHandExpressions的ECMA-262 (据我所能解释),没有任何有效的非终结符会导致括号被接受。 有没有我没有看到的东西?