ES6 解构的陷阱
Pitfalls of destructuring in ES6
我正在经历 https://exploringjs.com/es6/ch_destructuring.html#sec_pitfalls-destructuring。 link 的第二点说“在解构过程中,您可以声明变量或为它们赋值,但不能两者兼而有之。”。但是,我见过很多在解构过程中声明和赋值同时发生的例子。下面提到其中之一:
const [x, y, z] = ['a', 'b', 'c'];
console.log(x, y, z); // prints a b c
在上面的例子中,声明和赋值都在发生。 x, y, z 被声明为常量并被赋值。
任何人都可以帮助理解这个声明吗?可能是我理解错了。
我认为这里的意思是,如果您已经定义了变量,则无法执行此操作:
let a, b;
const [a, b, c] = ['a', 'b', 'c'];
我认为更好的表达方式是“解构时,您可以声明并分配所有变量或仅分配给现有变量”
例如,这将不起作用,因为 x
已经定义,但是您必须使用另一行来仅定义 y
和 z
:
let x = null
let [x, y, z] = ['a', 'b', 'c']
您正在通过为数组分配模式而不是通过声明常量来解构数组。虽然后者因前者而发生
在 link 中检查 10.2 的最后一个音符。 Bergi 已经写好了
我正在经历 https://exploringjs.com/es6/ch_destructuring.html#sec_pitfalls-destructuring。 link 的第二点说“在解构过程中,您可以声明变量或为它们赋值,但不能两者兼而有之。”。但是,我见过很多在解构过程中声明和赋值同时发生的例子。下面提到其中之一:
const [x, y, z] = ['a', 'b', 'c'];
console.log(x, y, z); // prints a b c
在上面的例子中,声明和赋值都在发生。 x, y, z 被声明为常量并被赋值。
任何人都可以帮助理解这个声明吗?可能是我理解错了。
我认为这里的意思是,如果您已经定义了变量,则无法执行此操作:
let a, b;
const [a, b, c] = ['a', 'b', 'c'];
我认为更好的表达方式是“解构时,您可以声明并分配所有变量或仅分配给现有变量”
例如,这将不起作用,因为 x
已经定义,但是您必须使用另一行来仅定义 y
和 z
:
let x = null
let [x, y, z] = ['a', 'b', 'c']
您正在通过为数组分配模式而不是通过声明常量来解构数组。虽然后者因前者而发生
在 link 中检查 10.2 的最后一个音符。 Bergi 已经写好了