当前位置:网站首页>ES6-03-解构赋值
ES6-03-解构赋值
2022-07-31 05:18:00 【春意迟迟、】
解构赋值:
语法:变量修饰符 数据模型=数据源
步骤:解析数据源 然后按照数据模型进行取值 再赋值给变量
意义:声明变量的高级写法
解构 :按照数据模型取出数据源中的数据
赋值:然后赋值给模型变量
<script> let obj={a:100,b:"hello",c:[10,203,0]} let {a,b,c}=obj // 隐式操作: let a=obj.a; let b=obj.b; let c=obj.c console.log(a) console.log(b) console.log(c) </script>
按照解构赋值的步骤来看:先解析数据源,再在数据源里找是否有数据模型中的变量,如果有就赋值,如果没有就是undefined。
<script> // 例一: // var [a,b,c]=arr1; //隐式操作: var a=arr[0]; var b=arr[1]; var c=arr[2] // 如果没有数据源会报错 // 例二: // var [name,{age}]=arr2; //隐式操作: var name=arr[0] var age=arr[1].age // 如果没有数据源会报错 // 例三:想要count第一次打印10,第二次打印2000 function useState(num){ function fn(arg){ //去让外界的count变量改变为arg 暂时用代码实现不了(技术有所欠缺) } return [num,fn] } var [count,setCount]=useState(10) // var count=[][0] // var setCount=[][1] // console.log(count,setCount) console.log(count)//10 setCount(2000) console.log(count)//2000 </script>
<script> // 例四: var arr=[{age:30}] function fn () { let arr[0].age=90;//错误 let形成暂时性死区,arr没有定义 let [{age}]=80;// } </script>
<script> // 例五: let obj={age:20} let {age,name1}=obj console.log(age,name1)//20 undefined </script>
分析:根据解构的步骤,在数据源中找不到name1,所以name1就是未定义。
<script> // 例六: let arr1=[{age1:20},{name1:"karen"}] let [{age1,name1}]=arr1 //var name1=arr[0].name1 console.log(age1,name1)//20 undefined //例七: let arr2=[{age2:20},{name2:"karen"}] let [{age2,name2="jack"}]=arr2 //var name1=arr[0].name1 console.log(age2,name2)//20 jack </script>
分析:例六的解构赋值是arr1[0]中取值,而arr1[0]={age1:20},里面只有age1属性,没有name1属性。例七是相当于直接给name2赋值。
<script> // 例九: let obj={a:undefined} let {a=10}=obj //隐式操作:let a=10; a=obj.a; console.log(a)//10 </script>
分析:按照隐式操作来说应该是undefined,但是这里可以根据就近原则或者权重来看a的值最后为10。
<script> // 例十:这是一个多重嵌套,要看明白 // (此处没有写数据源,会报错,只是举个例子) let [{age,its:[a,{b}]}]=data // 隐式操作:let its=data[0].its // let a=its[0] // let b=its[1].b console.log(its) </script>
注意解构赋值要写数据源,不然会报错。
边栏推荐
- Remote file xxx is mapped to the local path xxx and can't be found. You can continue debugging....
- UE5 最新动态虚幻引擎全新版本引爆互联网
- Remote file xxx is mapped to the local path xxx and can‘t be found. You can continue debugging....
- IDEA控制台不能输入信息的解决方法
- When solving background-size:cover, the picture is covered but not displayed completely?
- 力扣.剑指offer05.替换空格
- C语言数组的深度分析
- IDEA overview and installation and debugging
- 超详细!!!让你通透数组!!!初学复习不迷路!!
- 国际站卖家大促攻略,只需要做好这几件事
猜你喜欢
Pytorch learning notes 09 - multiple classification problem
mPEG-DSPE 178744-28-0 Methoxy-polyethylene glycol-phosphatidylethanolamine linear PEG phospholipids
[Solved] ssh connection report: Bad owner or permissions on C:\\Users/XXX/.ssh/config
TCP与UDP协议的区别,以及TCP的三次握手和四次挥手
一种用QT实现即时通信软件表情发送与接收的思路
windows下mysql忘记密码登录,并创建用户
【Rhapsody学习笔记】2:Count Down
堆和栈的区别
对称加密和非对称加密
Unity Text一个简单的输入特效
随机推荐
滑动窗口法
测试CSDN积分需求
学习JDBC之获取数据库连接的方式
滴滴被罚超80亿!收集并泄露1.07亿条乘客人脸识别信息
UE5 最新动态虚幻引擎全新版本引爆互联网
Remote file xxx is mapped to the local path xxx and can't be found. You can continue debugging....
Log jar package conflict, and its solution
CSDN上markdown编写的一些便捷操作
DingTalk Enterprise Internal-H5 Micro Application Development
Solution for MySQL The table is full
堆和栈的区别
windows下mysql忘记密码登录,并创建用户
哈希表基础
DSPE-PEG-COOH CAS: 1403744-37-5 Phospholipid-polyethylene glycol-carboxy lipid PEG conjugate
这些数组技巧,我爱了
VRchat_udon脚本介绍:傻瓜式教程教你如何实现VRchat地图的功能
什么样的人不适合入行编程?你真的适合学习编程吗?
cenos7配置IP,配置IP不生效
MySQL free installation download and configuration tutorial
Fluorescein-PEG-DSPE Phospholipid-Polyethylene Glycol-Fluorescein Fluorescent Phospholipid PEG Derivatives