本文对变量的解构赋值(destructing)和展开运算符(spread operator …)做个简单的介绍。
本文首发在前端开发说
变量的解构赋值
以下例子通过Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3216.0 Safari/537.36
测试。
数组赋值
1 | let [a, b] = [1, 2]; |
对象赋值
1 | // 用于提取数据 |
函数参数
1 | // 默认值设置 |
对象展开运算符
扩展运算符(spread operator …)将一个数组、类数组、字符串转为用逗号分隔的序列。
最早是在Vuex文档看到
1 | computed: { |
得知是对象展开运算符。查阅资料发现属于ES6变量的解构赋值的内容。说来也惭愧《ES6 标准入门》第1版,第2版都看过,当初看的不深入,很多知识点都有漏洞。而今天在封装Vue组件
的时候,如下代码看的甚是变扭,ES6模块和CommonJS规范糅杂在一起。
1 | import components from './components'; |
于是做了如下调整
1 | export default { |
Vuex的文档中有介绍对象展开运算符(现处于 ECMASCript 提案 stage-3 阶段)。
1 | The TC39 categorizes proposals into the following stages: |
大致翻译如下:
1 | Stage 0 - Strawman(展示阶段) |
对象合并
1 | const a = [1, 2]; |
函数传参
1 | function fun(...args) { |
扩展阅读
- 展开运算符的 6 种绝妙用法
- http://blog.csdn.net/qq_30100043/article/details/53424750
- ES6之Spread Operater拷贝对象
- es6 扩展运算符 三个点(…)
- 第四章 扩展的对象功能
总结
知识点的理解结合具体的项目代码,能快速掌握。不清楚不懂的查漏补缺,just-do-it,对!就是立刻做,这是你知识体系的短板,深挖进去发现会收获很多。
参考
- http://es6.ruanyifeng.com/#docs/destructuring
- https://github.com/thejameskyle/babel-handbook/blob/master/translations/zh-Hans/user-handbook.md
- https://excaliburhan.com/post/babel-preset-and-plugins.html
- https://segmentfault.com/a/1190000010468759
- https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment