JavaScript 中对象解构时指定默认值
2021-04-19 19:26
1081 查看
待解构字段为原始值正常情况下, 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 解构时指定别名你甚至可以在解构字段的同时为其重命名, ad0 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 对象解构时需要注意,当其为 null时,上述默认值并不生效,仍会报错。具体见下方讨论。 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 ES6之对象解构
- JavaScript如何获取当前页面上的指定对象.
- C#把对象类型转化为指定类型,转化失败时返回该类型默认值
- Javascript 扩展Date对象,实现字符串与Date按指定格式字符串互转
- 从无到有的学习JavaScript——第六篇(解构、数组操作、对象操作)
- javascript基数 - 在网页获得指定ID的元素或对象。
- javascript下判断一个对象是否具有指定名称的属性的的代码
- JavaScript解构赋值(代码说明ES6数组, 对象, 函数的解构赋值)
- javascript 数组对象根据指定属性排序
- javascript格式化指定日期对象的方法
- JavaScript获得指定对象大小的方法
- JavaScript Array(数组)对象中指定元素的删除
- JavaScript解构赋值(代码说明ES6数组, 对象, 函数的解构赋值)
- JavaScript删除数组对象中指定key对应的对象
- JavaScript获取当前页面上的指定对象示例代码
- javaScript数组移除指定对象或下标i,数组去重
- JavaScript获得指定对象大小的方法
- JavaScript根据指定路径查找对象属性值