待解構欄位為原始值正常情況下, const obj = {
a: 1,
b: 2,
};
const { a, b } = obj;
console.log(a, b); // 1 2
當被解構欄位缺失時, const obj = {
a: 1,
};
const { a, b } = obj;
console.log(a, b); // 1 undefined
此時可在解構時使用 const obj = {
a: 1,
};
const { a, b = 2 } = obj;
console.log(a, b); // 1 2
解構時指定別名你甚至可以在解構欄位的同時為其重新命名, const obj = {
a: 1,
b: undefined
}
const { a, b: c = 2 } = obj;
console.log(a, c) // 1 2
上述過程其實為:
上面的過程等同於: const c = obj.b || 2
待解構欄位為物件考察如下的物件: const obj = {
innerObj: {
a: 1,
b: 2
}
}
正常情況下可通過如下的形式解構以得到內層的欄位: const obj = {
innerObj: {
a: 1,
b: 2,
},
};
const {
innerObj: { a, b = 2 },
} = obj;
console.log(a, b); // 1 2
但如果裡面巢狀的物件缺失時,上面的解構會報錯: const obj = {};
const {
innerObj: { a, b = 2 },
} = obj;
console.log(a, b); // ? error: Uncaught TypeError: Cannot read property 'a' of undefined
此時需要在解構時對內層物件也指定預設值,形式如下: const obj = {};
const {
innerObj: { a, b = 2 } = {},
} = obj;
console.log(a, b); // undefined 2
解構欄位包含在多層巢狀內當被解構欄位包含在多層巢狀內時,甚至可以通過上面的方式為每一層都指定預設值: const obj = {}
const { foo: { bar: { a, b = 2 } = {} } = {} } = obj;
console.log(a, b) // undefined 2
物件解構時需要注意,當其為 const obj = {
foo: {
bar: null
}
}
const { foo: { bar: { a, b = 2 } = {} } = {} } = obj;
console.log(a, b) // ? error: Uncaught TypeError: Cannot destructure property 'a' of '{}' as it is null.
|
The text was updated successfully, but these errors were encountered: |
JavaScript 中物件解構時指定預設值
相關文章
- JavaScript 物件解構賦值JavaScript物件賦值
- Javascript 解構賦值,將屬性/值從物件/陣列中取出,賦值給其他變數JavaScript賦值物件陣列變數
- JavaScript 字串解構賦值JavaScript字串賦值
- 預設建構函式和帶預設值的建構函式不能同時存在函式
- JavaScript陣列解構賦值JavaScript陣列賦值
- JavaScript解構賦值的用途JavaScript賦值
- JavaScript中 Map 物件詳解JavaScript物件
- JavaScript 函式引數解構物件JavaScript函式物件
- 深入瞭解JavaScript中的物件JavaScript物件
- ES6小技巧 - 使用解構賦值設定函式引數預設值賦值函式
- JavaScript函式引數解構賦值JavaScript函式賦值
- JavaScript獲取table表格指定列的值JavaScript
- MySQL欄位預設值設定詳解MySql
- php7中為物件/關聯陣列進行解構賦值PHP物件陣列賦值
- JavaScript建構函式,物件導向程式設計JavaScript函式物件程式設計
- Python中如何給字典設定預設值Python
- 深度解讀《深度探索C++物件模型》之預設建構函式C++物件模型函式
- ${VAR:=預設值}和${VAR:-預設值} 區別
- 面試題:一道關於解構賦值和引數預設值的程式設計題面試題賦值程式設計
- JavaScript 解構賦值小括號的應用JavaScript賦值
- Navicat for MySQL 15使用教程:何時使用預設值以及如何選用恰當的預設值MySql
- 為 protocol 中屬性新增預設值Protocol
- JavaScript物件程式設計JavaScript物件程式設計
- JavaScript arguments物件詳解JavaScript物件
- Sqlserver的欄位datetime型別預設值設為getdate()時,設值毫秒為000SQLServer型別
- javascript 將變數值作為物件屬性 獲取物件對應的值JavaScript變數物件
- JavaScript 根據物件鍵值進行排序JavaScript物件排序
- 物件解構,陣列解構物件陣列
- Recoil 中預設值的正確處理
- es6中的引數預設值
- JavaScript刪除字串中的指定字元JavaScript字串字元
- JavaScript 檔案物件詳解JavaScript物件
- JavaScript 獲取指定時間前幾天日期JavaScript
- ES6中的解構賦值賦值
- pydantic 欄位的預設值設定獲取當前時間
- 從 ECMA 規範解析 JavaScript 預設的取值和賦值行為JavaScript賦值
- 在 JavaScript 中如何克隆物件?JavaScript物件
- JavaScript中物件的拷貝JavaScript物件