当前位置:网站首页>变量的解构赋值
变量的解构赋值
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 iterable
2.数组解构失败 --- 匹配不到变量,值等于undefined
let [a, b] = []; console.log("a=>",a) //a=> undefined console.log("b=>",b) //b=> undefined
3.对象解构报错
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' // 直接解构报错了,此时解构的局限性就体现出来了。
由此,解构赋值的时候,一定要避免解构报错。
边栏推荐
- "Dream Cup" 2017 Jiangsu information and future primary school summer camp it expert PK program design questions
- 深入理解Apache Hudi异步索引机制
- Arduino board description
- PHP \ newline cannot be output
- 那些易混淆的概念(三):function和class
- ADB utility commands (network package, log, tuning related)
- SQL Server knowledge gathering 9: modifying data
- A simple example of delegate usage
- Application of OpenGL gllightfv function and related knowledge of light source
- Applet jump to H5, configure business domain name experience tutorial
猜你喜欢
P2788 math 1 - addition and subtraction
CAS机制
"Dream Cup" 2017 Jiangsu information and future primary school summer camp it expert PK program design questions
Trajectory planning for multi robot systems: methods and Applications Overview reading notes
July 10, 2022 "five heart public welfare" activity notice + registration entry (two-dimensional code)
ArrayList线程不安全和解决方案
How to prepare for the advanced soft test (network planning designer)?
[actual combat] transformer architecture of the major medical segmentation challenges on the list --nnformer
Cluster task scheduling system lsf/sge/slurm/pbs based on HPC scenario
ADB utility commands (network package, log, tuning related)
随机推荐
【亲测可行】error while loading shared libraries的解决方案
1324: [example 6.6] integer interval
Summary of router development knowledge
软考中级电子商务师含金量高嘛?
无法打开内核设备“\\.\VMCIDev\VMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导? 模块“DevicePowerOn”启动失败。 未能启动虚拟机。
ThreadLocal会用可不够
Unity websocket client
Find the greatest common divisor and the least common multiple (C language)
Use of dotween
IO model review
[actual combat] transformer architecture of the major medical segmentation challenges on the list --nnformer
Unity downloads files through the server address
单调性约束与反单调性约束的区别 monotonicity and anti-monotonicity constraint
seata 1.3.0 四种模式解决分布式事务(AT、TCC、SAGA、XA)
JS实现链式调用
2021 summary and 2022 outlook
Application of OpenGL gllightfv function and related knowledge of light source
[pro test feasible] error while loading shared libraries solution
【推荐系统 02】DeepFM、YoutubeDNN、DSSM、MMOE
BUUCTF---Reverse---reverse1