这是destructuring assignment。 @recursive 描述的行为是正确的,但知道它不限于第一个元素可能会有所帮助。如果它是用三个元素编写的:
function xyz([a, b, c]){...}
那么 a、b 和 c 都将被声明为函数范围内可用的变量,在这种情况下,将等于数组的前 三个 元素。此外 - 如果作为参数传递的数组没有至少三个元素,则参数中指定的其余元素(a、b 和 c)将存在作为声明,但将具有undefined的值:
// Example
function destructureThis([a, b, c]){
console.log(a, b, c);
}
var shortArray = [1, 25];
destructureThis(shortArray);
// Prints to console:
// 1 25 undefined
同样,如果参数数组更大,则将忽略其他元素,如前所述。
var longerArray = [1, 5, 9, 50, 60];
destructureThis(longerArray);
// Prints to console:
// 1 5 9
另外...这是对 ECMAScript 规范的最新补充,如果不使用 Babel 或等效转译以实现向后兼容性,则应在所有目标环境(查看 IE)中对其进行测试。