携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第33天,点击查看活动详情
ES6允许按照按规定的模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)
数组的解构赋值
注意:如果解构不成功,变量的值就等于undefined
例如:
let [a, [[b], c]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3
let [ , , third] = ["a", "b", "c"];
third // "c"
let [x, , y] = [3, 2, 1];
x // 3
y // 1
let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]
let [x, y, ...z] = ['a'];
x // "a"
y // undefined
z // []
//如果解构不成功,变量的值就等于`undefined`
解构赋值允许指定默认值
例如:
let [foo = true] = [];
foo // true
let [x, y = 'b'] = ['a']; // x='a', y='b'
let [x, y = 'b'] = ['a', undefined]; // x='a', y='b'
对象的解构赋值
解构不仅可以用于数组,还可以用于对象
let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
foo // "aaa"
bar // "bbb"
但数值、对象存在不同
- 数组的元素:按次序排列的,变量的取值由它的位置决定
- 对象的属性:没有次序,变量必须与属性同名
注意:
例子的变量没有对应的同名属性,导致取不到值
最后等于undefined
例如:
let { baz } = { foo: 'aaa', bar: 'bbb' };
baz // undefined
//例子的变量没有对应的同名属性,导致取不到值
//最后等于`undefined`
同样的:对象的解构也可以指定默认值;生效条件:默认值生效的条件是,对象的属性值严格等于undefined
var {x, y = 5} = {x: 1};
x // 1
y // 5
var { message: msg = 'Something went wrong' } = {};
msg // "Something went wrong"
写在最后
更文三十三天啦!感谢大家的支持!我会继续努力坚持学习!养成了好习惯,每天必定会抽出时间多多少少学习前端知识
以上习题&笔记从大佬们的论坛学习而来,特感谢大佬们的知识分享~ (学习技术知识,果然要看大佬们的技术博客,大家有好的推荐也欢迎指引我这个小白哈,感恩!)
附上学习链接,感谢这些大佬出题和解答:wangdoc.com/es6/destruc…