let x;
{x} = {x: 1};
// SyntaxError: syntax error
上面代码的写法会报错,因为 JavaScript 引擎会将{x}理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免 JavaScript 将其解释为代码块,才能解决这个问题。
没看懂上边这句话什么意思,为什么{x}理解成一个代码块会发生语法错误,为什么不提前声明变量就不会报错
let x;
{x} = {x: 1};
// SyntaxError: syntax error
上面代码的写法会报错,因为 JavaScript 引擎会将{x}理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免 JavaScript 将其解释为代码块,才能解决这个问题。
没看懂上边这句话什么意思,为什么{x}理解成一个代码块会发生语法错误,为什么不提前声明变量就不会报错
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
这是解构赋值:
而下边这个:
或者你也可以这么来理解:
=
是赋值运算符,它是从右向左结合的(注意区别于数学概念上的等号,js里的=
实际上可以理解为<=
,比如语句x = a + 3;
就是a+3后赋值给x),它需要左边的运算数是一个变量、数组的一个元素或者是对象的一个属性,右边的就无所谓。那么你在左边放了一个代码块,这显然不太合适……