函数对象参数默认值及其解构应用示例

ES5

以前我们是这么设置函数参数默认值的:

function es5Fn (options) {
  options = options === undefined ? {} : options;
  var a = options.a === undefined ? 1 : options.a;
  var b = options.b === undefined ? 2 : options.b;
  console.log(a, b);
}
  • 首先判断函数是否传入了一个对象,如果没有创建一个空对象。
  • 然后判断这个对象中是否含有a、b属性,没有将会设置为默认值。

ES6

function es6Fn ({a = 1, b = 2} = {}) {
  console.log(a, b);
}

 

(({x,y})=>{
 console.log(x, y); // // undefined undefined
})({});

(({x=1,y=2})=>{
 console.log(x,y); // 1 2
})({});

(({x=3, y=4}={})=>{
 console.log(x,y); // 3 4
})();

function test4({x,y}={x:100,y:200}) {
 console.log(x,y);
}
test4({}); // undefined undefined
test4(); // 100 200

function test({x=1,y=2,z=3}={}, [a=11,b=22,c=33]=[],name='Joh') {
 console.log(x,y,z,a,b,c,name);
}
test(); // 1 2 3 11 22 33 "Joh"

 

你可能感兴趣的:(es新特性)