ES6--解构赋值
2018-01-31 17:47
218 查看
1.数组的解构赋值
之前我们的赋值:let a = 1,let b = 2;现在利用解构赋值,按照对应位置对应变量赋值(解构赋值不成功的返回undefined),可写为:
对象的解构赋值
对象的属性没有次序,变量必须与属性同名,才能取到正确的值,解构赋值不成功undefined
重点一个特性length,与数组相似:
之前我们的赋值:let a = 1,let b = 2;现在利用解构赋值,按照对应位置对应变量赋值(解构赋值不成功的返回undefined),可写为:
let [a,b] = [1,2];
let [a,[,c],d] = [1,[[2],3],4];//数组嵌套模式
let [,,c] = [1,2,3]; //c----3;逗号分隔表示未定义变量,c对应的值为3;
let [a,...b] = [1,2,3,4];//...表示剩余的其他值,此时a的值为1,b的值为234
对于set结构也可以使用解构赋值: let[a,b,c] = new Set([1,2,3]);//a--1,b--2,c--3;在解构赋值中有[b]默认值,ES6 内部使用严格相等运算符(
===),判断一个位置是否有值。所以,只有当一个数组成员严格等于
undefined,默认值才会生效。如果一个数组成员是
null,默认值就不会生效;
let [x = 1] = [undefined];//x - 1 let [x = 1] = [null];//x - null如果默认值是一个表达式,那么这个表达式是惰性求值的,即只有在用到的时候,才会求值。
function f() { console.log('aaa'); } let [x = f()] = [1];//x - 1;因为默认值是一个表达式需要计算,所以它会最简单的取值为1,而不是求值2.
对象的解构赋值
对象的属性没有次序,变量必须与属性同名,才能取到正确的值,解构赋值不成功undefined
let { bar, foo } = { foo: "aaa", bar: "bbb" }; foo // "aaa" bar // "bbb" let { baz } = { foo: "aaa", bar: "bbb" }; baz // undefined
如果变量名与属性名不一致,必须写成下面这样 (属性名必须一下foo) let {foo:fun} = {foo:'nihaoma'} //fun--nihaoma解构赋值的默认值:
var {x = 3} = {}; x // 3 var {x, y = 5} = {x: 1}; x // 1 y // 5 var {x: y = 3} = {}; y // 3 var {x: y = 3} = {x: 5}; y // 5 var { message: msg = 'Something went wrong' } = {}; msg // "Something went wrong"
数组与对象之间的解构赋值: let arr = [1,2,3]; let {0:first,[arr.length-1]:last} = arr; first // 1 last // 33. 字符串的解构赋值
重点一个特性length,与数组相似:
let {length : len} = 'hello'; len // 54. 函数参数的传值的解构赋值
function result({x=0,y=0}={}){ return [x+y] } result();//x与y的默认值为0
相关文章推荐
- ES6 —(解构赋值)
- ES6--变量的声明及解构赋值
- es6分享——变量的解构赋值
- ES6 变量的解构赋值
- es6 学习笔记 之 变量声明 和 变量的 解构赋值
- 复习es6-解构赋值+字符串的扩展
- ES6——Day3(解构赋值的用途)
- 【es6】【变量的解构赋值】【字符串,数值和布尔值解构】【函数参数的解构赋值】【用途】
- es6 变量的解构赋值
- ES6 变量的解构赋值
- ES6数组的解构赋值
- JavaScript解构赋值(代码说明ES6数组, 对象, 函数的解构赋值)
- es6 变量的解构赋值
- es6解构赋值(二)
- ES6中变量的解构与赋值
- ES6变量解构赋值的应用
- es6 -- 与解构赋值默认值结合使用
- ES6-解构赋值
- ES6 之解构赋值
- ES6小实验-变量的解构赋值