天天看点

ES6随笔D1

ES6 允许按照一定模式,可以从数组中提取值,按照对应位置,对变量赋值,这被称为解构。

解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。由于<code>undefined</code>和<code>null</code>无法转为对象,所以对它们进行解构赋值,都会报错。

如果解构不成功,值为  underfind

ES6随笔D1
ES6随笔D1

View Code

事实上,只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值。

解构是允许默认值的,默认值可以引用解构赋值的其他变量,但该变量必须已经声明。只有当赋值=== underfind时,默认值才生效。

 对象的解构属性没有次序,变量必须与属性同名,才能取到正确的值。

对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。

上面代码中,<code>foo</code>是匹配的模式,<code>baz</code>才是变量。真正被赋值的是变量<code>baz</code>,而不是模式<code>foo</code>。

  

上面代码的写法会报错,因为 JavaScript 引擎会将<code>{x}</code>理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免 JavaScript 将其解释为代码块,才能解决这个问题。