变量的解构赋值

1.什么是解构赋值

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。包括:数组、对象、函数参数、字符串、数值和布尔值。null和undefined不行。在实际开发时,真正使用比较多的是数组、对象和函数参数的解构

解构赋值,可以理解为变量的取出,并赋值给新变量。为这样的操作提供了一种简便语法。

2. 数组的解构赋值

let arr = [1, 2, 3];
// 有这样的需求
// let a = arr[0];
// let b = arr[1];
// let c = arr[2];

// 使用解构赋值可以快速实现
let [a, b, c] = arr;
console.log(a, b, c); // 1,2,3

上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。

如果解构失败,变量的值等于undefined。

let [foo, bar, baz] = [1, 2, 3];
// foo  1
// bar  2
// baz  3

let [x, , y] = [1, 2, 3];
// x  1
// y  3

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

2.1 交换变量的值

let a = 1;
let b = 2;
// 交换值
// let c = a;
// a = b;
// b = c;

// 解构赋值实现
[a, b] = [b, a];

3. 对象的解构赋值

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

如果解构失败,变量的值等于undefined。

let breakfast = {
    bread: "早餐面包",
    fruit: "apple",
    egg: "鸡蛋"
}
// 想要将 对象中的 属性值取出,并赋值给某些变量
// let a = breakfast.bread;
// let b = breakfast.fruit;

// 使用解构赋值
let {
    bread: a,
    fruit: b,
    egg: c
} = breakfast;
console.log(a, b, c); // '早餐面包','apple','鸡蛋'

let {
    // 属性名: 属性值变量
    bread:bread,
    fruit:fruit,
    egg:egg
} = breakfast;
// 相当于 let bread = breakfast.bread; 取出 breakfast的bread属性,并赋值给变量 bread

console.log(bread, fruit, egg); // '早餐面包','apple','鸡蛋'

// 属性名 和 保存属性值的变量名 一样时, 对象可以简写
//let {
//    bread,
//    fruit,
//    egg
//} = breakfast;

比如,我们常用到的后台数据请求

function getmovie(){
    $.ajax({
        url:'http://bufantec.com/api/douban/movie/top250',
        success(res){
            console.log(res);
            const {data:result}=res;
            console.log(result); // 将 res.data 取出 赋值给了 result
        }
    })
}
getmovie();

3. 函数参数的解构赋值

函数的参数也可以使用解构赋值

function add([x, y]){
  return x + y;
}

add([1, 2]); // 3
// 相当于 形参[x, y] = [1, 2], 数组的解构赋值语法
function move({x, y}) {
  return [x, y];
}
move({x: 3, y: 8});
// 相当于 形参{x, y} = {x: 3, y: 8} , 对象的解构赋值语法
// 取出实参当中的x属性值,  赋值给 形参变量 x
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值