ES6 裏邊,函數設置默認值 ,簡單的不用說了,說一些稍微不是特別簡單的函數
仍是先從簡單的起個頭對象
function x ({method = 'get'}) {get
console.log(method)io
}console
x() // TypeofError 由於要求的是默認值是個對象模式的function
x({}) // 'get'co
若是傳入的參數是個對象參數
functionn x2( {method='get'} = {}) {undefined
console.log(method)
}
x2() // 'get' 默認不傳的話,傳入的值是個空 {}
比較
function x3({x = 0, y = 0} = {}) {console.log(x, y)}
function x4 ({x , y} = {x: 0, y : 0}) {console.log(x, y)}
x3 函數參數的默認值是個空對象,但是設置了對象解構賦值的默認值,
x4 函數參數的默認值是一個有具體屬性的函數, 可是沒有設置對象解構賦值的默認值
也就是說 x3 在你不傳參的時候,或者傳參沒有x y 屬性的時候,均可以設置 x y 的默認值
而x4 若是你不傳參,他默認是 {x: 0, y: 0}, 一旦你傳參了,{x: 0, y: 0} 這個默認的設定就沒用了,就默認你傳了 {x , y}
因此 x3() // 0 0
x4() // 0 0
x3({x: 1, y: 2}) // 1, 2
x4({x: 1, y: 2}) // 1, 2
x3({x: 1}) // 1 ,0
x4({x: 1}) // 1 undefined
x3({}) // 0 0
x4({}) // undefined undefined
x3({z: 3}) // 0 0
x4({z: 3}) // undefined undefined