1.数组的解构赋值
//以前给变量赋值 let a=1,b=2,c=3
//在es6里 可以这样
// let [a,b,c]=[1,2,3]
// console.log(a,b,c)
let
ary=[
'a',
'b']
// let [a,b,c]=ary
// console.log(a,b,c)// a b undefined
let
arr=[
'aa',
'bb',
'cc',
'dd']
let [
a,
b,
c]=
arr
console.
log(
a,
b,
c)
2.嵌套赋值
//嵌套数组,其实是给对应的变量付得值
let [
x,
y,[
s],[[
f]]]=[
1,
2,[
3],[[
4]]]
console.
log(
x,
y,
s,
f)
3.省略赋值
let
ary=[
1,
2,
3,
4,
5,
6]
//定义一个数组ary
let
a=
ary[
0]
//定义一个变量a,保存的是ary中的第一个值
let
b=
ary[
ary.
length-
1]
//定义一个变量b,保存的是ary中的第一个值
//es6的写法:x取到ary中的第1项,y是ary的第5项
let [
x,,,,
y]=
ary
console.
log(
x,
y)
//1,5
4.不定参数的赋值
//比如现在有个数组【1,2,3,4,5】 现在我想让a=1 b=[2,3,4,5]
let [
a,...
b]=[
1,
2,
3,
4,
5]
console.
log(
a,
b)
//1 ,[2,3,4,5]
//这就是不定参数赋值
let [,,
x,,...
y]=[
1,
2,
3,
4,
5,
6,
7,
8,
9]
console.
log(
x,
y)
//3 ,[5,6,7,8,9]
5.默认值
let [
f0,
f1]=[
1]
console.
log(
f0,
f1)
//1 ,undefined 现在f1没值 所以是undefined,
let [
f2,
f3=
2]=[
1]
console.
log(
f2,
f3)
//1 ,2 如果后边有值 就取后边的值 ,如果没有 就取2 相当于是默认值
//es6里边的运算是严格运算的,判断一个位置是否有值, 是用的===判断,
//如果数组中成员不严格等于undefined ,默认值不会生效
let [
f=
1]=[
2]
//null
console.
log(
f)
//2 //null
function
fn() {
console.
log(
"haha")
}
let [
x=
fn(),
y=
0]=[
1]
console.
log(
x,
y)
//1 ,0 //所以说只要变量在数组中的位置不是undefined,fn函数就不会执行
针对es6中...的用法总结:
用法1:展开运算符(spread operator),作用是和字面意思一样,就是把东西展开。可以用在array
和object
上都行,比如
let a = [1,2,3];
let b = [0, ...a, 4]; // [0,1,2,3,4]
let obj = { a: 1, b: 2 };
let obj2 = { ...obj, c: 3 }; // { a:1, b:2, c:3 }
let obj3 = { ...obj, a: 3 }; // { a:3, b:2 }
用法2:剩余操作符(rest operator),是解构的一种,意思就是把剩余的东西放到一个array
里面赋值给它。一般只针对array
的解构
let a = [1,2,3];
let [b, ...c] = a;
b; // 1
c; // [2,3]
// 也可以
let a = [1,2,3];
let [b, ...[c,d,e]] = a;
b; // 1
c; // 2
d; // 3
e; // undefined
// 也可以
function test(a, ...rest){
console.log(a); // 1
console.log(rest); // [2,3]
}
test(1,2,3)