函式引數的預設值與解構賦值的預設值

2021-10-07 02:40:26 字數 706 閱讀 6329

function foo() 物件,沒有預設值,只有解構賦值引數的預設值

console.log(x, y);

}foo({}) // undefined 5

foo() // 1 5

foo() // 1 2

foo() // typeerror: cannot read property 'x' of undefined

上面**只使用了物件的解構賦值預設值,沒有使用函式引數的預設值。只有當函式foo的引數是乙個物件時,變數xy才會通過解構賦值生成。如果函式foo呼叫時沒提供引數,變數xy就不會生成,從而報錯。因此定義函式時,當與解構賦值結合使用時,引數預設值可以不設定,但是這時候呼叫函式時就必須要傳值,否則會報錯,因此只有進行了結構賦值這一步才會去定義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...