JavaScript解构赋值

2019-10-21 | 阅读:188次 JavaScript

对象的解构赋值

对象解构赋值1:

变量名和属性名一致时,变量名可以省略

let {
    a: a,
    b: b
} = {
    a: "aaa",
    b: "bbb"
};
console.log(a, b);
//输出aaa bbb
let {
    a,
    b
} = {
    a: "aaa",
    b: "bbb"
};
console.log(a, b);
//输出aaa bbb

变量名与属性名不一致时,变量名不能省略;

let obj = {
    firstName: 'lu',
    lastName: 'benwei'
};
let {
    firstName: a,
    lastName: b
} = obj;
console.log(a, b);//输出  lu benwei
console.log(firstName, lastName);//报错 Uncaught ReferenceError: firstName is not defined

解构赋值时,真正被赋值的时变量名,而不是属性名,属性名只是一个标识

对象解构赋值2---嵌套

let {a, c, d}={a: 12, c: 5, d: 6};
console.log(a, c, d);//输出:12 5 6
let [{a, b}, [n1, n2, n3], num, str]=[{a: 12, b: 5}, [12,5,8], 8, 'cxzcv'];
console.log(a,b,n1,n2,n3,num,str);//输出 12 5 12 5 8 8 cxzcv

对象解构赋值3—默认值

对象的解构也可以指定默认值;默认值生效的条件是,对象的属性值严格等于undefined

var {
    x = 3
} = {};
console.log(x);//输出; 3
//等价于
var {x=3}={x:undefined}
var {x=3}={x:null}
var {
    x ,
    y=5
} = {x:1};
console.log(x,y);//输出: 1 5

对象解构赋值4—分行&圆括号

let a,b ;
[a,b]=[1,2];
//等价于
let [a,b]=[1,2];//推荐写法 左右两边结构必须一样
let a,b ;
{a,b}={1,2};//报错 {} 不能直接赋值
//修改后
let a,b;
({a,b}={a:1,b:2});
//推荐写法
let {a,b}={a:1,b:2};
0条评论
  • 1