JavaScript中解构赋值

JavaScript中解构赋值相当于从数组或对象中提取值并赋值给新的变量。有时候需要搭配拓展运算符…和默认值使用

var a, b, rest;
[a, b] = [10, 20];
console.log(a); // 10
console.log(b); // 20

[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(a); // 10
console.log(b); // 20
console.log(rest); // [30, 40, 50]

({ a, b } = { a: 10, b: 20 });
console.log(a); // 10
console.log(b); // 20


// Stage 4(已完成)提案中的特性
({a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40});
console.log(a); // 10
console.log(b); // 20
console.log(rest); // {c: 30, d: 40}

一、解构数组

1、声明变量的同时,通过解构数组(提取数组中的元素)进行赋值
var foo = ["one", "two", "three"];

var [o, t, th] = foo;
console.log(o); // "one"
console.log(t); // "two"
console.log(th); // "three"
2、先声明变量,再解构数组进行赋值
var a, b;

[a, b] = [1, 2];
console.log(a); // 1
console.log(b); // 2
3、设置默认值,防止解构出undefined
var a, b;

[a=5, b=7] = [1];
console.log(a); // 1
console.log(b); // 7
4、通过解构赋值交换变量
var a = 1;
var b = 3;

[a, b] = [b, a];
console.log(a); // 3
console.log(b); // 1
5、忽略某些返回值
function f() {
  return [1, 2, 3];
}

var [a, , b] = f();
console.log(a); // 1
console.log(b); // 3
6、使用剩余模式,将数组中剩余元素赋值给一个变量,该变量就是数组
var [a, ...b] = [1, 2, 3];
console.log(a); // 1
console.log(b); // [2, 3]

二、解构对象

定义一个变量,变量名 = 属性名,这时候可以从原对象中解构出属性值赋给这个同名的变量。
左边声明变量名必须与对象的key相同!!!因为对象中讲究key value一一对应

1、基本赋值

将对象中的value提取出来,赋值给左边声明的变量
注:左边声明变量名必须与对象的key相同!!!因为对象中讲究key value一一对应

var o = {p: 42, q: true};
var {p, q} = o;
var {pi, qi} = o;
console.log(p); // 42
console.log(q); // true
console.log(pi); // undefined
console.log(qi); // undefined

2、不声明直接赋值

这里有注意点:
1、{a, b}会被当做块,因此必须加上括号
2、(…)前面一行必须用;结尾,否则会被认为是上一行后面的代码
3、({a, b} = {a: 1, b: 2}); 相当于 var {a, b} = {a:1, b:2 }

var a, b;

({a, b} = {a: 1, b: 2});

3、从对象中提取变量并赋值给新的变量名

可以从一个对象中提取变量并赋值给和对象属性名不同的新的变量名。
这时候对象中的key就不会被提取出来,因为没有定义key这个变量

// 对象解构出来的值赋值给新的变量,这时 obj中的m n没有被解构出来
var obj = { m: 5, n: 21 }
var { m: foo, n: bar } = obj;

console.log(foo); // 42
console.log(bar); // true
// console.log(m); // 报错
// console.log(n); // 报错
4、将对象中提取的变量赋默认值

变量可以先赋予默认值。当要提取的对象对应属性解析为 undefined,变量就被赋予默认值。

var {a = 10, b = 5} = {a: 3};

console.log(a); // 3
console.log(b); // 5

5、将对象中提取的属性值赋给新的变量名,并设置默认值

一个属性可以同时
1)从一个对象解构,并分配给一个不同名称的变量
2)分配一个默认值,以防未解构的值是 undefined。

var {a:aa = 10, b:bb = 5} = {a: 3};

console.log(aa); // 3
console.log(bb); // 5
// console.log(a); // 报错
// console.log(b); // 报错


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值