ES6解构赋值

      近期看了自己往期写的东西,发现比较乱,自己写博客,除了巩固自己学的东西以外,也是希望给那些和自己一样还在踩坑的骚年们一些启示,但是web前端毕竟是一个非常庞杂的体系,没有按照一定的体系去梳理自己所学的东西的话,那么确实可能收效甚微,从这周开始,自己也是在学习阮一峰大大的ES6标准入门这本书,结合MDN上面的一些例子,去记录这个学习的过程。

      解构赋值语法是一个 Javascript 表达式,这使得可以将值从数组属性从对象提取到不同的变量中。这个是MDN中关于解构赋值的一个概述,解构赋值也是比较简单的一个新的语法规范,大家读完这个MDN的内容肯定都是会有一些了解,本篇也是主要说下一些其中比较容易犯错的地方。

     解构赋值总主要有两个部分,即数组的解构,和对象的解构赋值。先说数组的解构赋值,数组的解构赋值就是直接声明并赋值的方法

var [a, b, c] = [1, 2, 3];
console.log(a);
console.log(b);
console.log(c);
//1,2,3

var [a, b, c] = [1, 2];
console.log(a);
console.log(b);
console.log(c);
//1,2,undefined

这个也是非常容易理解,按顺序将右边的数组的值一一赋给左边的变量,如果出现右边的数组的值不够,解构不成功的话,那么变量的值就等于undefined,另外需要注意的地方,右边如果是不可遍历的解构,或者通俗来说,右边不是数组的话,那么解构失败,是会报错的,这个是比较容易犯错的地方。关于可遍历解构,ES6有一个Iterator接口,后续自己学习到的话再来说。

      另外一个自己觉得可能容易犯错的地方,默认值的运用,即

var [x = 1] = [];
x // 1

var [x = 1] = [undefined];
x // 1

var [x = 1] = [null];
x // null

可以看出来,就是在右边的值严格等于undefined的时候,默认值才会生效,否则的话默认值是不会生效的。下面在说说对象的解构赋值,道理其实都是一样的,但是有一点需要注意的就是如果你是先赋值变量,然后再进行解构赋值操作的话,下面的表达式则会报错。

let foo;
{foo} = {foo: 1};
// syntax error

let foo;
let {foo} = {foo: 1};
// syntax error

第一个例子是因为js引擎会将{}中的内容解释为一个代码块从而发生错误,正确的写法就是在外面加上一个括号(),

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

这样就可以避免错误了,第二个例子则是let的特性导致的,let和const都是一样的,不能重新声明变量,一旦赋值的变量以前声明过就会报错。

       另外则是博主觉得可能用的比较多的解构赋值,就是函数参数的解构赋值,

function add([a, b]){
    return a + b;
}
add([1,2]); // 3


function move({a=0,b=0}={}){
    return [a, b];
}
move({a:3,b:5});  //[3,5]
move({a:3});  //[3,0]
move({});  //[0,0]

同样我们也可以给函数参数解构加上默认值,如果右边的值严格等于undefined的话,则采用默认值,这样的一个写法可以避免很多诸如

let a = c + d || '';

这样的一个验证式的写法,有了解构赋值就可以在运行函数的时候就进行判断参数的值了,可以节省很多功夫。纵观解构赋值还是比较简单的,ES6入门这本书还提及到了一些遍历接口等等,此篇也是作为后续学习的一个基础,也是希望带给大家和自己一些启示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ES6解构赋值的好处有以下几点: 1. 简化代码:ES6解构赋值可以让我们更简洁地从数组或对象中提取值,并将其赋给变量。这样可以减少冗余的代码,使代码更加简洁易读。 2. 提高可读性:通过使用解构赋值,我们可以清晰地表达出我们想要提取的值的含义,使代码更易于理解和维护。 3. 方便的交换变量值:使用解构赋值可以方便地交换两个变量的值,而不需要使用额外的中间变量。 4. 快速提取对象属性:解构赋值可以快速提取对象中的属性,并将其赋给变量。这样可以方便地访问和操作对象的属性。 5. 函数参数的灵活应用:解构赋值可以用于函数的参数中,可以方便地从传入的对象或数组中提取所需的值,使函数的参数更加灵活。 6. 处理JSON数据:解构赋值可以方便地从JSON数据中提取所需的值,使得处理JSON数据更加方便快捷。 7. 支持默认值:解构赋值可以为变量设置默认值,当提取的值不存在时,可以使用默认值来代替,避免出现undefined的情况。 8. 多层嵌套解构:ES6解构赋值支持多层嵌套的解构,可以方便地从复杂的数据结构中提取所需的值。 9. 可以与扩展运算符结合使用:解构赋值可以与扩展运算符(...)结合使用,可以方便地提取数组或对象中的部分值,并将其与其他值合并或进行其他操作。 总之,ES6解构赋值可以使我们的代码更加简洁、可读性更高,并且提供了更多的灵活性和便利性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值