ITPub博客

首页 > IT职业 > IT图书 > 读书笔记-ES6标准入门:数组的解构赋值

读书笔记-ES6标准入门:数组的解构赋值

IT图书 作者:sinlong 时间:2021-09-09 09:05:23 0 删除 编辑

基本用法
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)

//ES5:为变量赋值,只能直接指定值
var a = 1;
var b = 2;
var c = 3;

//ES6:“模式匹配”。可以从数组中提取值,按照位置的对应关系对变量赋值
var [a,b,c]= [1,2,3];

let [foo,[[bar],baz]]=[1,[[2],3]];
foo // 1
bar // 2
baz // 3

如果解构不成功,变量的值就等于undefined

var [foo]=[];

不完全解构,等号左边的模式只匹配等号右边数组的一部分。这种情况下解构OK

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

如果等号的右边不是数组(或者严格说,不是可遍历的解构),那么将会报错。

//报错
let [foo]=1;
let [foo]=false;
let [foo]=NaN;
let [foo]=undefined;
let [foo]={};

上面的表达时都会报错,因为等号右边的值,要么转为对象以后不具备Iterator接口,要么本身就不具备Iterator接口

解构赋值不仅适用于var命令,也适合用于let和const命令。
对于set结构,也可以使用数组的解构赋值。

let [x,y,z]=new Set(["a","b","c"]);
x //"a"

事实上,只要某种数据结构具备Iterator接口,都可以采用数组形式的解构赋值。

默认值
解构赋值允许制定默认值。
ES6内部使用严格相等运算符===判断一个位置是否有值。所以,如果一个数组成员不严格等于undefined,默认值是不会生效的。
如果默认值是一个表达式,那么这个表达式是惰性求值的。即只有在用到的时候才会求值。
默认值可以引用解构赋值的其他变量,但该变量必须已经声明。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3156/viewspace-2807949/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: Java中
请登录后发表评论 登录
全部评论

注册时间:2019-08-30

  • 博文量
    0
  • 访问量
    685