关于es6 结构赋值的小知识

let [x, y, ...z] = ['a'];
x // "a"
y // undefined
z // []


let [x = y, y = 1] = [];     
// ReferenceError: y is not defined   x用y做默认值时,y还没有定义

对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。

let { bar, foo } = { foo: 'aaa', bar: 'bbb' };
===
let { bar:bar, foo:foo } = { foo: 'aaa', bar: 'bbb' };
//也就是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。
//真正被赋值的是后者,而不是前者

let { bar:x, foo:y } = { foo: 'aaa', bar: 'bbb' };
//x  'bbb'    y 'aaa'

let { bar:x='123', foo:y='jjj' } = { foo: 'aaa' };
// x '123'  y 'aaa'


let obj = {
  p: [
    'Hello',
    { y: 'World' }
  ]
};

let { p, p: [x, { y }] } = obj;
x // "Hello"
y // "World"
p // ["Hello", {y: "World"}]

字符串的结构

字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。

类似数组的对象都有一个length属性,因此还可以对这个属性解构赋值。

let {length : len} = 'hello';
len // 5

原文 :https://www.yuque.com/docs/share/87ecf850-3c65-4a66-8a81-72232ed5e265?# 《结构赋值的小知识点》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值