WebStorm JavaScript解构分配

WebStorm JavaScript解构分配,javascript,node.js,ecmascript-6,webstorm,Javascript,Node.js,Ecmascript 6,Webstorm,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的一部分?节点编译器的第一个版本(没有括号)似乎没有问题,因此它似乎不是标准的一部分。这不是一个错误,这是如何: 注 表达式语句不能以U+007B(

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的一部分?节点编译器的第一个版本(没有括号)似乎没有问题,因此它似乎不是标准的一部分。

这不是一个错误,这是如何:

表达式语句不能以U+007B(左曲括号)开头,因为这可能使它与块不明确。ExpressionStatement不能以function或class关键字开头,因为这会使它与FunctionDeclaration、GeneratorDeclaration或ClassDeclaration不明确。ExpressionStatement不能以async函数开头,因为这会使它与AsyncFunctionDeclaration不明确。ExpressionStatement不能以两个标记序列let开头,因为这将使它与let LexicalDeclaration(其第一个LexicalBinding是ArrayBinding模式)不明确


这不是一个错误,这是如何:

表达式语句不能以U+007B开头(左曲括号)因为这可能会使它与块不明确。ExpressionStatement不能以函数或类关键字开头,因为这会使它与FunctionDeclaration、GeneratorDeclaration或ClassDeclaration不明确。ExpressionStatement不能以async函数开头,因为这会使它与Asy不明确ncFunctionDeclaration.ExpressionStatement不能以两个标记序列let[开头,因为这将使其与let LexicalDeclaration(其第一个LexicalBinding是ArrayBinding模式)不明确


第一个是语法错误,也是在node中。它可能是
let{a,b}={a:0,b:0}
或第二个版本。@baao我认为它不会是
let
,因为
a
b
变量将是全局变量。甚至不是
var
,只是全局变量。为什么@Kinduser?@baao Simple test-
函数x(){a,b}={a:2,b:4};}
。调用此函数后,您将能够在全局范围内访问这些变量。如果它是
常量
let
或甚至
var
,您将无法在函数外部访问它。是的,我不确定……您的解释比我(和他的代码)更有意义…:-)@kindUser第一个是语法错误,也是在node中。它应该是
let{a,b}={a:0,b:0}
或第二个版本。@baao我认为它不会是
的,因为
a
b
变量是全局变量。甚至不是
var
。只是全局变量。为什么@Kinduser?@baao简单测试-
函数x(){({a,b}={a:2,b:4})}
。调用此函数后,您将能够在全局范围内访问这些变量。如果它是
const
let
甚至
var
,您将无法在函数外部访问它。是的,我不确定……您的解释比我(和他的代码)更有意义::-)@Kinduser