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]


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM