【前端入门】ES6中的解构赋值---有关数值、对象

103 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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…