В Node.js REPL (также тестируется в SpiderMonkey) последовательность
var foo = null;
(foo) = "bar";
с foo
, впоследствии равным "bar"
, в отличие от null
.
Это кажется противоречивым, потому что можно было бы подумать, что скобки по крайней мере разыгрывают bar
и бросают недопустимую левую сторону в присваивании`.
Понятно, что когда вы делаете что-нибудь интересное, это не уступает вышеупомянутому пути.
(foo, bar) = 4
(true ? bar : foo) = 4
В соответствии с ECMA-262 на LeftHandExpressions (насколько я могу интерпретировать) нет действительных нетерминалов, которые приведут к заключению в скобки принимаются.
Есть ли что-то, чего я не вижу?