美文网首页
阮一峰es6读后笔记(数组解构)

阮一峰es6读后笔记(数组解构)

作者: 蜗牛和曼巴 | 来源:发表于2019-04-18 00:07 被阅读0次

数组结构

“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。
let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3

let [ , , third] = ["foo", "bar", "baz"];
third // "baz"

let [x, , y] = [1, 2, 3];
x // 1
y // 3

let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]
如果解构不成功,变量的值就等于undefined。
let [x, y, ...z] = ['a'];
x // "a"
y // undefined
z // []
不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组。这种情况下,解构依然可以成功。
let [x, y] = [1, 2, 3];
x // 1
y // 2
如果等号的右边不是数组(或者严格地说,不是可遍历的结构,参见《Iterator》一章),那么将会报错。
/ 报错
let [foo] = 1;
let [foo] = false;
let [foo] = NaN;
let [foo] = undefined;
let [foo] = null;
let [foo] = {};
对于 Set 结构,也可以使用数组的解构赋值。

let [x, y, z] = new Set(['a', 'b', 'c']);
x // "a"
事实上,只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值。
解构赋值允许指定默认值。

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变量的解构赋值

    本文参考阮一峰老师es6入门做的学习笔记。 1.数组的解构赋值。 ES6允许按照一定模式,从数组和对象中提取值,对...

  • 变量的解构赋值

    es6-2 (变量的解构赋值) 本文以及之后的文章都是参考阮一峰ES6入门,记录下作为笔记。 数组的解构赋值对象的...

  • 阮一峰es6读后笔记(数组解构)

    数组结构

  • 「ES6学习」解构赋值(一)

    「ES6学习」解构赋值(一) 注:本文参考文章 阮一峰 ECMAScript 6 入门 引言 按照一定模式,从数组...

  • 「ES6学习」解构赋值(二)

    「ES6学习」解构赋值(二) 注:本文参考文章 阮一峰 ECMAScript 6 入门 引言 按照一定模式,从数组...

  • ES6解构

    参考:ES6入门(阮一峰)解构:解构与构造数据截然相反。 例如,它不是构造一个新的对象或数组,而是逐个拆分现有的对...

  • ES6_note

    ES6笔记 es6 - 解构 数组的 解构赋值 let [a, b, c] = [1, 2, 3]; 这种写法属于...

  • 3. 解构赋值

    阮一峰-变量的解构赋值 大神写得算是相当的友好了. 我感觉基本都不用写笔记了. 把不会的大概记一下. 数组的解构n...

  • 1、let和const命令

    阮一峰《ES6 标准入门》 笔记阮一峰 博客案例 在ES6中,我们通常实用 let 表示变量,const 表示常量...

  • ES6赋值—解构赋值

    作者:米书林参考文章:《菜鸟教程》、《 ECMAScript 6 入门》(阮一峰) 解构的定义 ES6 允许按照一...

网友评论

      本文标题:阮一峰es6读后笔记(数组解构)

      本文链接:https://www.haomeiwen.com/subject/imjawqtx.html