參數默認值可以與解構賦值的默認值,結合起來使用。
function foo({x, y = 5}) { console.log(x, y); } foo({}) // undefined 5 foo({x: 1}) // 1 5 foo({x: 1, y: 2}) // 1 2 foo() // TypeError: Cannot read property 'x' of undefined
上面代碼只使用了對象的解構賦值默認值,沒有使用函數參數的默認值。只有當函數foo
的參數是一個對象時,變量x
和y
才會通過解構賦值生成。如果函數foo
調用時沒提供參數,變量x
和y
就不會生成,從而報錯。通過提供函數參數的默認值,就可以避免這種情況。
function foo({x, y = 5} = {}) { console.log(x, y); } foo() // undefined 5