Destructuring解构javascript与python

python版的:

a, (b, [c, d]) = (1, [2, iter((3, 4))])
print(a, b, c, d)

head, *tail=(1,2,3)
print(head,tail)

js版的:

let [a, [b, [c, d]]] = [1, [2, [3, 4]]];
console.log(a, b, c, d);

let [head, ...tail]=[1,2,3];
console.log(head,tail);

输出都是:

1 2 3 4
1 [ 2, 3 ]

没感觉python有多么屌啊。

Array destructuring
let [one, two, three] = ['one', 'two', 'three'];//一般的
let [a=5, b=7] = [1];//默认值
[a, b] = [b, a];//交换a,b的值
[a,,,b]=[1,2,3,4];//a是1,b是4,一个逗号忽略一个值
[a, ...b] = [1, 2, 3];//a是1,b是[2,3]
Object destructuring
({a, b} = {a: 1, b: 2});
//or
let {a, b} = {a: 1, b: 2};

不能直接写{a, b} = {a: 1, b: 2},因为这样的话{a,b}会被当作一个块(block)而非对象字面量

//变量名字和属性名字不一样,并且设置默认值
let {a:aa = 10, b:bb = 5} = {a: 3};
console.log(aa); // 3
console.log(bb); // 5

let {a, ...rest} = {a: 10, b: 20, c: 30, d: 40}
console.log(a,rest);//10 { b: 20, c: 30, d: 40 }

const { 'fizz-buzz': fizzBuzz } = { 'fizz-buzz': true };
console.log(fizzBuzz); // "true"

参考文献:

  1. http://www.phyast.pitt.edu/~micheles/scheme/scheme15.html
  2. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值