ES6解构赋值
来源:互联网 发布:sql表字段设置默认值 编辑:程序博客网 时间:2024/06/16 22:03
数组的解构赋值
数组的解构赋值需要左边的变量结构需要等于右边的值的结构,即给对应位置的变量声明对应位置的值,变量的取值由位置决定
只要某种数据类型具有迭代器(iterator)接口,就可以使用数组的解构赋值,不一定非是数组
es6中具有iterator接口的数据类型有:数组,类数组对象,字符串,Set,Map,Generator函数
注:对象不具有iterator接口,需要自己配置
var [a,b,c] = ['a','b'];console.log(a); //aconsole.log(b); //bvar [a,[[b],c]] = [1,[[2],3]];console.log(a); //1console.log(b); //2console.log(c); //3//不完全解构,左边只是右边的一部分,但是模式是正确的var [a,,c] = ['a1','b1','c1','d1'];console.log(a); //a1console.log(c); //c1var [a,...b] = ['a2','b2','c2','d2']; //rest参数:...b 获取多余的数组元素,组成一个新数组,常用于函数参数中,作用与arguments类似,arguments是类数组console.log(a); //a2console.log(b); //['b2','c2','d2']var [a,b,...c] = ['a3'];//rest参数必须是最后一个元素console.log(a); //a3console.log(b); //undefined 解构不成功就是undefinedconsole.log(c); //[] rest参数解构不成功是空数组[]//字符串具有iterator接口var [a,b,c] = 'hello';console.log(a); //hconsole.log(b); //econsole.log(c); //lvar [a,b,c] = new Set(['aa','bb','cc']);console.log(a); //aaconsole.log(b); //bbconsole.log(c); //cc
对象的解构赋值
对象的属性没有次序,变量必须与属性同名,才能取到正确的值,即变量名与属性名一一对应,次序不重要
var {foo,bar} = {bar: 'aaa', foo: 'bbb'}console.log(foo); //bbbconsole.log(bar); //aaavar {foo} = {baz: 'ccc'}console.log(foo); //undefined 因为变量与属性名不一致//解决办法//在变量前指定对应的属性名使用:隔开var {baz:foo} = {baz: 'ddd'}console.log(foo); //ddd foo指向baz属性对应的值//还可以用于嵌套结构对象, 不过应该很少会这么做吧。。。var obj = { p: [ 'Gary', { y: 'Guo' } ]}var { p: [ x, { y } ]} = obj;console.log(x); //Garyconsole.log(y); //Guo
如果是先声明了变量再进行对象解构赋值则需要加上括号,否则js回你认为{}是一个代码块,而不是解构赋值
var bar;{bar} = {bar:1} //SyntaxError: expected expression, got '='console.log(bar);var bar;({bar} = {bar:111})console.log(bar); //111 实际开发中不推荐这么做
对象解构赋值的小应用:求最大值
//正常方法var arr = [2,5,1,8,4,2];console.log(Math.max.apply(this, arr)); //8//简化var {max} = Math;console.log(max.apply(this, arr)); //8即是将现有方法赋值到变量上使用
阅读全文
0 0
- 【ES6系列】解构赋值
- ES6 destructuring 解构赋值
- es6 chapter3 解构赋值
- ES6 解构赋值用途
- ES6:解构赋值
- ES6 解构赋值
- 【es6】解构赋值
- es6-变量解构赋值
- ES6-变量解构赋值
- ES6变量解构赋值
- ES6解构赋值详解
- ES6解构赋值
- ES6之解构赋值
- ES6之-解构赋值
- ES6之解构赋值
- ES6解构赋值
- ES6:解构赋值
- es6语法-解构赋值
- C语言实现顺序表
- 模板函数
- java集合框架之迭代器
- Vulkan规范:第九章 9.7
- 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。错误写法以及正确写法。
- ES6解构赋值
- codeforces Educational Codeforces Round 32 E. Maximum Subsequence
- 关于缓存
- 机器学习---第七讲支持向量机
- 定时器 cron 参数示例
- 23种设计模式
- 编译器 代码对齐(VC6.0、eclipse、codeblocks)
- 171120之内部类
- SSH和SSM两个框架的浅显的区别(一)