function foo() 物件,沒有預設值,只有解構賦值引數的預設值
console.log(x, y);
}foo({}) // undefined 5
foo() // 1 5
foo() // 1 2
foo() // typeerror: cannot read property 'x' of undefined
上面**只使用了物件的解構賦值預設值,沒有使用函式引數的預設值。只有當函式foo
的引數是乙個物件時,變數x
和y
才會通過解構賦值生成。如果函式foo
呼叫時沒提供引數,變數x
和y
就不會生成,從而報錯。因此定義函式時,當與解構賦值結合使用時,引數預設值可以不設定,但是這時候呼叫函式時就必須要傳值,否則會報錯,因此只有進行了結構賦值這一步才會去定義x和y
通過提供函式引數的預設值,就可以避免這種情況,如下:
function foo(={})
上面這個函式的情況是:
1 如果呼叫foo時沒傳引數,則預設是{},將{}值對左邊進行解構賦值,因為y有預設值,則結果為x:undefined,y:5
2 比如傳了值為,那麼就使用這個物件對左邊進行解構賦值,匹配到了x和y,所以最終結果x=10,y=20;
解構給預設值 解構賦值預設值誤區
問題還原 這是最近 cr 的時候在業務 中發現了乙個問題,先來看一下問題 data 為介面返回的資料 const total 0 data.result const list bizobject.list 其他邏輯,比如把 list 更新到 state 中,等等 a 介面正常的情況 data 中有 ...
ES6學習 函式引數預設值與解構賦值預設值
1.es6的解構 es6中引入了解構賦值的操作,其作用是 將值從陣列array或屬性從物件object提取到不同的變數中 即分為兩種情況 從陣列array中解構,以及從物件object中解構 從陣列中解構 const a,b 1,2 a 1,b 2 當然這些是基本的陣列解構賦值,你還可以用逗號,進行...
lua 函式 預設值 定義函式引數的預設值
如果你想要命名引數和預設值,如php或python,你可以使用表構造函式呼叫你的函式 myfunction 函式本身可以有這樣的簽名 function myfunction t setmetatable t,local a,c t 1 or t.a,t 2 or t.b,t 3 or t.c fun...