函數設置默認值,對象的解構賦值

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

相關文章
相關標籤/搜索