注意參數是對象,並且等號左邊是解構后的變量,用等號賦值,右邊是參數,也就是正常的變量,所以對象用冒號給值
案例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]