经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
JavaScript之变量解构赋值的使用
来源:cnblogs  作者:会飞的一棵树  时间:2021/4/19 8:56:39  对本文有异议

引言

解构赋值是ES6中引入的一种能快速方便的进行变量赋值的方法,其主要也就是分为解构和赋值两部分内容。解构者,也就是匹配结构,然后分解结构进行赋值。

数组的解构赋值

使用

  1. const arr = [1,3,5]
  2. const [a,b,c] = arr;
  3. console.log(a) // 1
  4. console.log(b) // 3
  5. //相当于
  6. const a = arr[0]
  7. const b = arr[1]
  8. // 部分结构匹配也能解构,解构不成功就会undefined
  9. const [a] = arr; // a为1
  10. const [a,b,c] = arr; // c为undefined
  11. const [,y] = arr; // y为3
  12. // 可以使用类似rest参数的模式
  13. const [a,...arrs] = arr;
  14. console.log(arrs) // [3,5]

解构时指定默认值,默认值生效的条件,该位置(===)严格等于undefined

  1. const [a,b,x,y=66] = arr; //则y默认值为66

注:若使用[]解构的对象,为非数组且是没有Iterator接口的数据结构,则会报错。

对象的结构赋值

使用

  1. const person = {
  2. name:'zhangsan',
  3. age:18,
  4. lover:{
  5. name:'lishi',
  6. age:20
  7. }
  8. }
  9. const {name,age,lover} = person;
  10. console.log(name); //zhangsan
  11. console.log(lover); //{"name":"lishi","age":20}
  12. // 相当于
  13. const name = person.name;
  14. const age = person.age;
  15. // 若对象属性名无法匹配,则结构失败undefined
  16. const {age0} = person; // age0为undefined
  17. // 可用:类似取别名,则能通过别名取出对应属性的值
  18. // 此时age0为18,age为undefined
  19. const {age:age0} = person;
  20. // 也能嵌套解构
  21. // 解构的时候不应有两个相同的变量名,相当重复声明了
  22. // loverName为lishi
  23. const {name,lover:{name:loverName}} = person;

实质

  1. const {age} = {age:12}
  2. 等价
  3. const {age:age} = {age:12}

image
指定默认值,默认值生效的条件,该位置(===)严格等于undefined

  1. const {name='li',age=12} = {age:19}

字符串的结构赋值

  1. const [a,b,c,d] = 'haha';
  2. const {length} = 'haha'; // length为4

函数参数的解构赋值

使用

  1. // 使用上就是对应类型进行解构,然后就可以作参数用了
  2. function foo([a,b]) {return a+b}
  3. let result = foo([1,3]) // result为4
  4. let arr = [[2,1],[2,2]].map(([a,b]) => a+b) //arr [3,4]

原文链接:http://www.cnblogs.com/flytree/p/14660131.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号