珠海网站建设技术支持,wordpress 更新主题,车身做网站宣传图,网页开发设计公司文章目录 1.数组的解构赋值1.1 基本用法1.2 默认值1.3更多对象解构赋值 1.数组的解构赋值
1.1 基本用法
ES6允许按照一定的模式#xff0c;从数组和对象中提取值#xff0c;对变量进行赋值#xff0c;这被称为结构。
let [a, b, c] [1, 2, 3];如果解构不成功#xff0c… 文章目录 1.数组的解构赋值1.1 基本用法1.2 默认值1.3更多对象解构赋值 1.数组的解构赋值
1.1 基本用法
ES6允许按照一定的模式从数组和对象中提取值对变量进行赋值这被称为结构。
let [a, b, c] [1, 2, 3];如果解构不成功变量的值就等于undefined。
let [foo] [];
let [bar, foo] [1];以上两种情况都属于解构不成功foo的值都会等于undefined。
另一种情况是不完全解构即等号左边的模式只匹配一部分的等号右边的数组。这种情况下解构依然可以成功。
let [x, y] [1, 2, 3];
x // 1
y // 2let [a, [b], d] [1, [2, 3], 4];
a // 1
b // 2
d // 4如果等号的右边不是数组或者严格地说不是可遍历的结构参见《Iterator》一章那么将会报错。
// 报错
let [foo] 1;
let [foo] false;
let [foo] NaN;
let [foo] undefined;
let [foo] null;
let [foo] {};1.2 默认值
结构赋值允许指定默认值。
let [foo true] [];
foo // truelet [x, y b] [a]; // xa, yb
let [x, y b] [a, undefined]; // xa, yb注意ES6 内部使用严格相等运算符判断一个位置是否有值。所以只有当一个数组成员严格等于undefined默认值才会生效。
let [x 1] [undefined];
x // 1let [x 1] [null];
x // null上面代码中如果一个数组成员是null默认值就不会生效因为null不严格等于undefined。
如果默认值是一个表达式那么这个表达式是惰性求值的即只有在用到的时候才会求值。
function f() {console.log(aaa);
}let [x f()] [1];上面代码中因为x能取到值所以函数f根本不会执行。上面的代码其实等价于下面的代码。
let x;
if ([1][0] undefined) {x f();
} else {x [1][0];
}
//[1][0]指的是数组[1]中的一个元素默认值可以引用解构赋值的其他变量但该变量必须已经声明。
let [x 1, y x] []; // x1; y1
let [x 1, y x] [2]; // x2; y2
let [x 1, y x] [1, 2]; // x1; y2
let [x y, y 1] []; // ReferenceError: y is not defined上面最后一个表达式之所以会报错是因为x用y做默认值时y还没有声明。
1.3更多对象解构赋值
数组的解构赋值
对象的解构赋值
字符串的解构赋值
数值与布尔值的解构赋值
函数参数的解构赋值
解构赋值实战用途