WebStorm中的以下有效ES6:

let {a,b} = {a:0,b:0};
{a,b} = {a:2,b:4};


在第二个等号处显示错误:“预期表达式”。显然,JavaScript设置已设置为ES6。

通过添加括号可以消除错误:

let {a,b} = {a:0,b:0};
({a,b} = {a:2,b:4});


这是Bug还是ES6的一部分?节点编译器似乎对第一个版本没有问题(不带括号),因此它似乎并不是标准的一部分。

最佳答案

这不是错误,这是ExpressionStatement的方式:


  注意
  ExpressionStatement不能以U + 007B(左卷曲的括号)开头,因为这可能会使它与Block产生歧义。 ExpressionStatement不能以function或class关键字开头,因为这会使它与FunctionDeclaration,GeneratorDeclaration或ClassDeclaration产生歧义。 ExpressionStatement不能以异步函数开头,因为这会使它与AsyncFunctionDeclaration产生歧义。 ExpressionStatement不能以两个标记序列let [开头,因为这会使它与let LexicalDeclaration产生歧义,后者的第一个LexicalBinding是ArrayBindingPattern。

07-28 10:12