博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于ES6中的解构
阅读量:4623 次
发布时间:2019-06-09

本文共 1246 字,大约阅读时间需要 4 分钟。

  ES6中的解构赋值主要遵循的规则是,先看等号右边,右边有值走赋值,右边无值走左边默认。下面列出几个小栗子介绍它的主要运用。

1 function fn(){2         return 3;3 }4 let [x=fn()]=[1];5 console.log(x);     //x=1

     上面的列子看出,尽管x=一个立即执行的函数,但还是先走右边的赋值。如果把等号右边变成一个空数组,那么x=3,走左边的默认赋值。

1 let [a=2,[b=1]]=[1,[2]];2 console.log(a,b)

  解构赋值时,等号左边格式要和右边的格式相等,不然会报错

let [a,b]=[undefined,1]console.log(a,b)   // a=undefined b=1

 

1 let [a=b,b]=[undefined,1]2 console.log(a,b)  // 报错

  上面两个demo大致上看起来一样,但是为什么后者会报错呢?那是因为在ES6解构赋值中,使用的是严格模式的===,如右边的数组成员严格===undefined为true时,就会走默认的赋值,在这里,第二个的undefined===undefined(true),走左边的默认赋值,b未定义,因此报错。

 

 

  关于对象的结构赋值,同理,左右结构要相同

1 let {x,y} = {x:1,y:2};   3 console.log(x,y); // x=1  y=2

  如果要给左边的变量名重命名,可以这样写

 

1 let {b:x,a:y} = {a:1,b:2};2 console.log(x,y);  // x=2 y=1   

 

  在右边的对象里没有找到值,返回undefined

1 let {x,y} = {a:1,b:2};2 console.log(x,y);   //undefined,undefined

  对象赋值也是一样,如果右边的对象属性值严格===undefined,那么就走左边的默认赋值

  var {x=3} = {x: undefined}; // x=3

  var {x=3} = {x: null};     // x=null

 

  解构赋值的运用场景,获取div的样式对象集合,通过左边的值去匹配右边并找出相应的属性值

  let {width:w,height:h,border:b,margin:m} = getComputedStyle(div);

因此可以得出div的宽w,高h,边框b,外边距m。

  解构赋值在函数中的运用:

 

1     function fn(a=1,b=2){2         alert(a+b);3     }4     5     fn(4,5);

 

    当不传值时,a=1,b=2,当传值时,走传的值

 

转载于:https://www.cnblogs.com/AngliaXu/p/7257763.html

你可能感兴趣的文章
leetcode笔记:Pascal's Triangle
查看>>
ASP.NET性能优化之构建自定义文件缓存
查看>>
Shell——windows上写完放入linux的时候需要注意的问题
查看>>
65条常用的正则表达式
查看>>
Vscode断点调试PHP
查看>>
做前端要做的6大事
查看>>
LeetCode 813. Largest Sum of Averages
查看>>
vSphere、Hyper-V与XenServer 你选哪个?
查看>>
java.lang.UnsupportedClassVersionError
查看>>
实现接口必须要加注解@Override吗
查看>>
apicloud UISearchBar 使用方法
查看>>
【spring+websocket的使用】
查看>>
mongo二维数组操作
查看>>
localStorage之本地储存
查看>>
Archlinux 交换左Ctrl和Cap键
查看>>
#openstack故障处理汇总
查看>>
搜索旋转排序数组 II
查看>>
20、docker swarm
查看>>
psp工具软件前景与范围文档
查看>>
day06-三元表达式
查看>>