对象的解构赋值

1.对象解构赋值的内部机制:先找到同名属性,然后赋值给相应的变量,实际被赋值的是后者

var {first:baz,last:bar} = {first:"aaa",last:"bbb"};
baz//"aaa"
bar//"bbb"

2.对于let 和const 而言,变量不能重复声明,所以一旦赋值的变量以前声明过,就会报错。例子如下:

let foo;
let {foo} = {foo:1};

let baz;
let {first:baz} = {first:"aaa"};

因为var命令允许重复声明变量,所以这个错误只在let和const命令中出现,如果没有第二个let命令,就不会报错,例子如下:

let foo;
({foo} = {foo:1});
let baz; 
({first:baz} = {first:"aaa"});

3.解构也可以用于嵌套的对象:

var node = {
    loc:{
        start:{
            line:1,
            column:5
        }
    }
};
var {loc:{start:{line,column}}} = node;
console.log(line);//1
console.log(column);//5

4.对象的解构也可以指定默认值:

var {x = 2} = {};
console.log(x);x//2
var {x,y = 3} = {x:1};
console.log(x);x//1
console.log(y);y//3
var {x = 3} = {x:undefined};
console.log(x);//3
var {y = 2} = {y:null};
conole.log(y);//null

默认值生效的条件是:对象的属性值严格等于undefined。

5.下面写法会抛出语法错误:

var x;
{x} = {x:1};

因为JS引擎会将{x}理解成一个代码块,从而发生语法错误。正确的写法如下:

var x;

({x} = {x:1});

6.对象的解构赋值可以很容易的将现有对象的某些方法赋值到某个变量

let {log,sin,cos} = Math;

上面代码将Math对象的log(), sin(), cos()三个方法赋值给log,sin,cos变量。

 

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值