ECMAScript-----(一)变量的解构赋值

想到变量赋值大家会怎么赋值?是不是这样:?

let a = 1;
let b = 2;
let c = 3;

这样非常麻烦,现在,ES6允许被写成这样:

let [a,b,c] = [1,2,3]

本质上,这种赋值方式属于”模式匹配“,只要左右两边的格式相同,那么左边的变量就可以赋上对应位置的值

下面是使用嵌套数组进行解构赋值的例子:

let [a, [[b]a, c]] = [1, [[2], 3]];
console.log(a+"---"+b+"---"+c);
//1---2---3
let [a, ...b] = [1, 2, 3, 4];
console.log(a+"---"+b);
//1---[2,3,4]
let [a,b,...c] = ["111"]
console.log(a+"---"+b+"---"+c);
//111---undefined---[]

下面是对于对象的解构赋值:

let {foo, bar} = {foo: "isFoo",bar: "isBar"}
console.log(foo+"---"+bar);
//isFoo---isBar
let {x, y = 4} = {x:1}
console.log(x+"---"+y);
//1---4
let {x = 3} = {x: undefined};
console.log(x);
//3
let {x = 3} = {x: null};
console.log(x);
//null
//node:默认值生效的条件是属性值严格等于undefined

下面是对于字符串解构赋值的例子:

const [a,b,c,d,e] = "hello";
console.log(a+"---"+b+"---"+c+"---"+d+"---"+e);
//h---e---l---l---o
let {length: len} = "hello";
console.log(len);
//5
//node:类似数组的对象都有一个length属性,可以对这个属性进行解构赋值

 

解构赋值的用途:

(一)交换两变量的值:

let [x, y] = [1,2];
[x, y] = [y, x];
console.log(x+"---"+y);
//2---1

(二)从函数返回多个值

//返回一个数组
function demo() {
    return [1,2,3]
}
let [a,b,c] = demo();
console.log(a+"---"+b+"---"+c);
//1---2---3
//返回一个对象
function demo() {
    return {
        a:1, b:2, c:3
    }
}
let {a,b,c} = demo();
console.log(a+"---"+b+"---"+c);
//1---2---3

(三)提取JSON数据

let obj1 = {
    name: "章珊",
    sex: 1,
    habbits: ["swimming", [1, 2],[3,4]]
};
let {name, sex, habbits} = obj1;
console.log(name+"---"+sex+"---"+habbits);
//"章珊"---1---[swimming,1,2,3,4]

 

posted @ 2021-01-29 18:04  会转圈圈的哆瑞米  阅读(58)  评论(0编辑  收藏  举报