当前位置:网站首页>变量的解构赋值
变量的解构赋值
2022-07-07 08:49:00 【wax9092】
前言:
旧书不厌百回读,熟读精思子自知
参考文档:变量的解构赋值 · 语雀
解构异常
1.数组解构报错 --- 不是可遍历的结构
let [a] = 1; //Uncaught TypeError: 1 is not iterable
let [b] = false;//Uncaught TypeError: false is not iterable
let [c] = NaN;//Uncaught TypeError: NaN is not iterable
let [d] = undefined;//Uncaught TypeError: undefined is not iterable
let [e] = null;//Uncaught TypeError: null is not iterable
let [f] = {};//Uncaught TypeError: {} is not iterable2.数组解构失败 --- 匹配不到变量,值等于undefined
let [a, b] = [];
console.log("a=>",a) //a=> undefined
console.log("b=>",b) //b=> undefined3.对象解构报错
let {b} = undefined;//Uncaught TypeError: Cannot destructure property 'foo' of 'undefined' as it is undefined.
let {e} = null;// Uncaught TypeError: Cannot destructure property 'e' of 'null' as it is null.4.对象解构失败 --- 匹配不到变量,值等于undefined
let {a} = 1; //a=> undefined
let {b} = false;//b=> undefined
let {c} = NaN;//c=> undefined
let {f} = {};//f=> undefined解构重命名
对象重命名:使用场景同一作用域解构同名变量时(let&const);
// 对象变量重命名
let {name:first,tag} = {name:"555",tag:"1222"};
console.log(name) //
console.log(first)//555
console.log(tag) // 1222
let {name:second,tag:three} = {name:"666",tag:"777"};
console.log(second)//666
console.log(three) // 77解构赋值
设置默认值注意事项:
1.对象设置默认值报错
let {one = "677"} = null; //Uncaught TypeError: Cannot read properties of null (reading 'one')
let {two = "677"} = undefined; //Uncaught TypeError: Cannot read properties of null (reading 'two')
let { data = []} = null;// Cannot read properties of null (reading 'data')2.数组设置默认值报错
如果是解构报错,则无法进行设置默认值
let [a] = 1; //Uncaught TypeError: 1 is not iterable
let [b] = false;//Uncaught TypeError: false is not iterable
let [c] = NaN;//Uncaught TypeError: NaN is not iterable
let [d] = undefined;//Uncaught TypeError: undefined is not iterable
let [e] = null;//Uncaught TypeError: null is not iterable
let [f] = {};//Uncaught TypeError: {} is not iterable总结:
由于解构会有异常情况, 则使的解构赋值存在一定的局限性;
// 假设请求接口获取一个列表数据(应该是一个数组),,返回结构如下:
const data = {
tableList:[],
totalCount:0
}
//使用解构复制
let { tableList = []} = data;
console.log("tableList",tableList) // []
//但是难免会存在null情况
const data2 = {
result:null,
totalCount:0
}
let { result = []} = data2;
console.log("result",result) // result null 设置默认值失效
// 因为不符合数据结构,得在定一个补丁
const last = result || [];
console.log("last",last) // result null 设置默认值失效
//再来看一个情况 ,没有数据返回的是 null
const { list = []} = null;
console.log("list",list) //Uncaught TypeError: Cannot read properties of null (reading 'list'
// 直接解构报错了,此时解构的局限性就体现出来了。由此,解构赋值的时候,一定要避免解构报错。
边栏推荐
- Deeply understand the characteristics of database transaction isolation
- The gun startles the dragon, and the crowd "locks" Zhou Zhi
- CAS mechanism
- ArrayList线程不安全和解决方案
- Application of OpenGL gllightfv function and related knowledge of light source
- PHP \ newline cannot be output
- ThreadLocal会用可不够
- 香橙派OrangePi 4 LTS开发板通过Mini PCIE连接SATA硬盘的操作方法
- 2021 summary and 2022 outlook
- Deep understanding of Apache Hudi asynchronous indexing mechanism
猜你喜欢

CSAPP Bomb Lab 解析
![P1031 [noip2002 improvement group] average Solitaire](/img/ba/6303f54d652fa7aa89440e314f8718.png)
P1031 [noip2002 improvement group] average Solitaire

Unable to open kernel device '\.\vmcidev\vmx': operation completed successfully. Reboot after installing vmware workstation? Module "devicepoweron" failed to start. Failed to start the virtual machine

Leetcode-560: subarray with sum K

How to successfully pass the senior system architecture designer in the second half of the year?

Arduino board description

“梦想杯”2017 年江苏省信息与未来小学生夏令营 IT 小能手 PK 之程序设计试题

555 circuit details

Online hard core tools

July 10, 2022 "five heart public welfare" activity notice + registration entry (two-dimensional code)
随机推荐
What are the contents of the intermediate soft test, the software designer test, and the test outline?
【OneNote】无法连接到网络,无法同步问题
What is an intermediate network engineer? What is the main test and what is the use?
1323: [example 6.5] activity selection
2022.7.5DAY597
Operation method of Orange Pie orangepi 4 lts development board connecting SATA hard disk through mini PCIe
[pro test feasible] error while loading shared libraries solution
About hzero resource error (groovy.lang.missingpropertyexception: no such property: weight for class)
想考中级软考,一般需要多少复习时间?
[dai6] mirror image of JZ27 binary tree
[detailed explanation of Huawei machine test] tall and short people queue up
Elegant controller layer code
单调性约束与反单调性约束的区别 monotonicity and anti-monotonicity constraint
那些易混淆的概念(三):function和class
What are the test preparation materials and methods for soft exam information processing technicians?
长列表性能优化方案 memo
Schnuka: machine vision positioning technology machine vision positioning principle
CC2530 zigbee IAR8.10.1环境搭建
2022年7月10日“五心公益”活动通知+报名入口(二维码)
[machine learning 03] Lagrange multiplier method