es6 函数默认参数-对象

注意参数是对象,并且等号左边是解构后的变量,用等号赋值,右边是参数,也就是正常的变量,所以对象用冒号给值

案例1: 是对解构后的变量给默认值

function move({x = 0, y = 0} = {}) {
   return [x, y];
}
//没什么好说的
console.log(move({x: 3, y: 8}));// [3, 8]

//参数直有一个x,所以解构后没有y则使用默认
console.log(move({x: 3}));// [3, 0]

//传递了一个空对象参数,但是解构出来x,y都没有,则使用默认值
console.log(move({}));// [0, 0]

//无参数,会使用参数的默认值也就是{},解析后x,y都没有,则使用默认值
console.log(move());// [0, 0]

案例2: 参数给默认值

function move({x, y} = { x: 0, y: 0 }) {
    return [x, y];
 }
 
 //没什么好说的
 console.log(move({x: 3, y: 8})); // [3, 8]
 
 //传递了一个有x的对象则不使用默认参数{x:0,y:0},但是解构出来后没有y,并且也没有默认值,所以y是undefined
 console.log(move({x: 3})); // [3, undefined]
 
 //参数传递了一个空对象,不使用默认参数。但是没有解构出x,y 。都为undefined
 console.log(move({})); // [undefined, undefined]
 
 //没有传递参数,所以使用默认参数{x:0,y:0}。 都能解构出来,所以都为0
 console.log(move()); // [0, 0]
posted @ 2017-08-03 01:53  happysun85  阅读(5855)  评论(0编辑  收藏  举报