ES的解构赋值-数组&对象
栏目: JavaScript · 发布时间: 6年前
内容简介:按照一定的模式从数组或者对象中取值,对变量进行赋值的过程称为「解构」在ES5中,为变量赋值只能直接指定值:但是在ES6中,我们可以被允许写成:
什么是解构?
按照一定的模式从数组或者对象中取值,对变量进行赋值的过程称为「解构」
在ES5中,为变量赋值只能直接指定值:
var a=1,b=2,c=3 a; // 1 b; // 2 c; // 3
但是在ES6中,我们可以被允许写成:
var [a,b,c]=[1,2,3]; a; // 1 b; // 2 c; // 3
ES6中可以很明显看出来,我们可以在数组中取数据,按照位置的对应关系对变量赋值。
[默认值]
解构赋值允许使用默认值
var [foo = true] = []; foo; // true
[x,y = 'b'] = ['a'] x; // "a" y; // "b"
[x,y = 'b'] = ['a','c'] x; // "a" y; // "c"
ES6内部使用的是严格相等运算符(===)判断一个位置是否有值。所以,如果一个数组成员不严格等于undefind,默认值是不会生效的。
var [x = 1] = [undefined]; x; // 1
null == undefined // true var [x = 1] = [null]; x; // null
上述代码中,一个数组成员是null,因此默认值不生效。因为null不严格等于undefined。
function f(){
console,log('aaa');
}
let [x = f()] = [1]; // undefined ,不执行 f()
x; // 1
对象的解构赋值
var {foo,bar}={foo:"aaa",bar:"bbb"};
foo; // "aaa"
bar; // "bbb"
对象的解构赋值和数组有一个不同,数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。
var {laf} = {foo:"aaa",bar:"bbb"};
laf; // undefined;
在上面代码中,变量没有对应的同名属性,导致取不到值,最后等于undefind。
实际上,对象的解构赋值是以下形式的简写。
var { foo: foo, bar: bar } = { foo:"aaa", bar:"bbb" }
实际上,在对象的解构赋值的内部机制,是先找到同名属性,然后在赋值给对应的变量。真正被赋值的是后者,而不是前者。
var { foo : bar } = {foo : "aaaa"};
foo; // foo is not defined
bar; // "aaaa"
采用这种写法是,变量的声明和赋值都是一体的。对于let和const而言,变量不能重新声明,所以一旦赋值的变量以前声明过,就会报错。
let foo;
let {foo}={foo:'1'}
// Uncaught SyntaxError: Identifier 'foo' has already been declared
所以不能重复let声明:
let foo;
({foo} = {foo:1})
和数组一样,解构也可以用于嵌套解构的对象。
var obj={
p:[
"hello",
{y:"world"}
]
}
对象的解构也可以制定默认值。
var {x,y = 5} = {x:1};
x; // 1
y; // 5
默认值生效条件是,对象属性严格不等于undefined
var {x = 3} = {x: undefined};
x; // 3
var {x = 3} = {x:null};
x; // null
如果解构模式是嵌套的UI想,而且子对象所在的父属性不存在,则会报错
var {foo : {bar}} = {baz:'baz'};
以上所述就是小编给大家介绍的《ES的解构赋值-数组&对象》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Perl语言编程
[美] Larry Wall、Tom Christiansen、Jon Orwant / 何伟平 / 中国电力出版社 / 2001-12 / 129.00元
这不仅仅是一本关于Perl的书籍,更是一本独一无二的开发者自己介绍该语言及其文化的书籍。Larry Wall是Perl的开发者,他就这种语言的未来发展方向提出了自己的看法。Tom Christiansen是最早的几个拥护者之一,也是少数几个在错综复杂的中游刃有余的人之一。Jon Orwant是《Perl Journal》的主编,该杂志把Perl社区组合成了一个共同的论坛,以进行Perl新的开发。一起来看看 《Perl语言编程》 这本书的介绍吧!