ES6 之函数参数的解构赋值

基本用法

function add([x, y]){
  return x + y;
}

add([1, 2]); // 3

上面代码中,函数 add 的参数表面上是一个数组,但在传入参数的那一刻,数组参数就被解构成变量 x 和 y

下面是另一个例子

[[1, 2], [3, 4]].map(([a, b]) => a + b);
// [ 3, 7 ]

默认值

function move({x = 0, y = 0} = {}) {
  return [x, y];
}

move({x: 3, y: 8}); // [3, 8]
move({x: 3}); // [3, 0]
move({}); // [0, 0]
move(); // [0, 0]

上面代码中,函数 move 的参数是一个对象,通过对这个对象进行解构,得到变量 x 和 y 的值
如果解构失败,x和y等于默认值

注意,下面的写法会得到不一样的结果

function move({x, y} = { x: 0, y: 0 }) {
  return [x, y];
}

move({x: 3, y: 8}); // [3, 8]
move({x: 3}); // [3, undefined]
move({}); // [undefined, undefined]
move(); // [0, 0]

上面代码是为函数 move 的参数指定默认值,而不是为变量 x 和 y 指定默认值

当传递的参数严格等于 undefined 时,默认值就会生效

[1, undefined, 3].map((x = 'yes') => x);
// [ 1, 'yes', 3 ]

本文转载自 http://es6.ruanyifeng.com/#docs/destructuring#函数参数的解构赋值 并进行整理

除特殊说明外本人博客均属原创,转载请注明出处:http://blog.johnhan.cn/blog_1015.html
鄂ICP备17018604号-1  鄂公网安备42060702000030号