ES2015:解构赋值

解构赋值是ES2015的新语法,可以看作是有一个语法糖;它允许您使用类似于数组构建的方式将数组或对象的属性赋值给变量。这个语法非常简单,仍不失清晰的语意表达。

解构数组

如果没有解构赋值,你可能会像这样访问数组中的前三项:

var first = someArray[0];
var second = someArray[1];
var third = someArray[2];

通过解构赋值,代码可以编程这样:

var [first, second, third] = someArray;

甚至还可以这样嵌套:

var [foo, [[bar], baz]] = [1, [[2], 3]];

解构对象

在对象上进行解构可以将变量绑定到对象的不同属性。先指定要绑定的属性,然后指定要绑定其值的变量。相比解构数组,我觉得解构对象更为强大和有用。

var { foo, bar } = { foo: "lorem", bar: "ipsum" };
console.log(foo);// "lorem"
console.log(bar);// "ipsum"

注意: 这里是用的命名约定,把属性值赋给相同名称的变量;这里也可以指定所赋值的属性名,但是看起来就不简洁了,这里就不再啰嗦。

应用场景

这种解构语法最适合的应用场景就是接受传入参数,对比一下是不是舒服多了?

ES5语法

function drawES5Chart(options) {
  options = options === undefined ? {} : options;
  var size = options.size === undefined ? 'big' : options.size;
  var cords = options.cords === undefined ? {x: 0, y: 0} : options.cords;
  var radius = options.radius === undefined ? 25 : options.radius;
  console.log(size, cords, radius);
  // now finally do some chart drawing
}

drawES5Chart({
  cords: {x: 18, y: 30},
  radius: 30});

ES2015语法

function drawES2015Chart(
  {size = 'big', cords = {x: 0, y: 0}, radius = 25} = {}) {
  console.log(size, cords, radius);
  // do some chart drawing
}

drawES2015Chart({
  cords: {x: 18, y: 30},
  radius: 30});
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前面的话 我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段。在ES6中添加了可以简化这种任务的新特性...
    sunnyghx阅读 767评论 0 0
  • 一、ES6简介 ​ 历时将近6年的时间来制定的新 ECMAScript 标准 ECMAScript 6(亦称 ...
    一岁一枯荣_阅读 6,119评论 8 25
  • 特别说明,为便于查阅,文章转自https://github.com/getify/You-Dont-Know-JS...
    杀破狼real阅读 586评论 0 0
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,199评论 0 13
  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 3,046评论 3 37