es6 变量的解构赋值
2017-03-26 23:32
639 查看
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
为变量赋默认值
es6同时也可以对对象进行赋值操作,如下
/*下面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。 本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值 */ //eg1 let [a,b,c] = [1,2,3]; console.log('a='+a+';b='+b+';c='+c); //eg2 let [foo, [[bar], baz]] = [1, [[2], 3]]; console.log('foo='+foo+';bar='+bar+';baz='+baz); //eg3 let [ , , third] = ["foo", "bar", "baz"]; console.log('third='+third); // "baz" let [x, , y] = [1, 2, 3]; console.log('x='+x+';y='+y); let [head, ...tail] = [1, 2, 3, 4]; /*head // 1 tail // [2, 3, 4] */ console.log('head='+head+';tail='+tail);
为变量赋默认值
let [foo = true] = []; foo // true let [x, y = 'b'] = ['a']; // x='a', y='b' let [x, y = 'b'] = ['a', undefined]; // x='a', y='b' 注意,ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,如果一个数组成员不严格等于undefined,默认值是不会生效的。 let [x = 1] = [undefined]; x // 1 let [x = 1] = [null]; x // null 上面代码中,如果一个数组成员是null,默认值就不会生效,因为null不严格等于undefined
es6同时也可以对对象进行赋值操作,如下
//对象的赋值操作 let {obj1,obj2} = {obj1:12,obj2:11} console.log(obj1); let obj = { first: 'hello', last: 'world' }; let { first: f, last: l } = obj; console.log(f); console.log(l); //对象赋值其实赋值的是test1后面的那个值,前面只是用来做匹配的 let {test1:test2,test2:val2}={test1:'val1',test2:'val2'} //console.log(test1); console.log(test2); //如下foo没有定义,所以报错 let { foo: baz } = { foo: "aaa", bar: "bbb" }; console.log(baz); // "aaa" console.log(foo); // error: foo is not defined //对象的解构也可以指定默认值。 var {x = 3} = {}; console.log(x); // 3 var {x, y = 5} = {x: 1}; console.log(x); // 1 console.log(y); // 5 var {x:y = 3} = {}; console.log(y); // 3 var {x:y = 3} = {x: 5}; console.log(y); // 5
相关文章推荐
- 【es6】变量解构赋值
- ES6 变量的解构赋值
- ES6--变量的声明及解构赋值
- ES6 变量解构赋值
- ES6入门——变量的解构赋值
- 变量的解构赋值 ES6
- 【es6】【变量的解构赋值】【数组解构赋值】
- 【es6】【变量的解构赋值】【字符串,数值和布尔值解构】【函数参数的解构赋值】【用途】
- js -- ES6(三)-- 变量的解构赋值(根据阮一峰ES6标准入门整理 更新中。。。)
- ES6—变量 解构赋值
- ES6:变量的解构赋值
- ES6--变量的解构赋值
- es6-变量的解构赋值
- ES6变量解构赋值
- ES6 变量的解构赋值
- ES6学习3章:变量的解构赋值
- ES6-变量解构赋值
- ES6--变量的声明及解构赋值
- ES6中变量的解构赋值
- js-es6-变量的解构赋值