ES6解构赋值学习笔记

数组的解构

let [a, b, c] = [1, 2, 3]
// a = 1; b= 2; c = 3;

可嵌套

let [a, [[b], c]] = [1, [ [2], 3 ] ]
// a = 1; b = 2; c = 3;

可忽略

let [a, , b] = [1, 2, 3]
// a = 1; b = 3;

不完全解构

let [a = 1, b] = []
// a = 1; b = undefined;

剩余运算符

let[a, ...b] = [1,2,3,4]
// a = 1; b = [2,3,4]; 

字符串等
在数组的解构中,解构的目标若为可遍历对象,皆可进行解构赋值。可遍历对象即实现Iterator接口的数据。

let [a,b,c] = 'hi'
// a = 'h'; b = 'i'; c = undefined;

解构默认值

let [a = 2] = [ undefined];
// a = 2;

当解构模式有匹配结果,且匹配结果是undefined时,会触发默认值作为返回结果。

let [a = 3, b = a] = []   // a = 3; b=3;
let [a = 3, b = a] = [1]  // a= 1; b=1;
let [a = 3, b = a] = [1, 2]  // a = 1; b = 2;

对象模型的解构

let { foo, bar } = {foo: 'abc', bar: 'bbb'}
// foo = 'abc'; bar = 'bbb';

let {baz: foo} = {baz: '123'}
// foo = '123';

可嵌套可忽略

let obj = {p: [ 1, {y: 2}]}
let {p: [x, {y}]}  = obj
// x = 1; y = 2;

let obj = {p: ['hello', {y: 'world'}] };
let {p: [x, {  }] } = obj;
// x = 'hello'

不完全解构

let obj = {p: [{y: 'world'}] };
let {p: [{ y }, x ] } = obj;
// y =  'world'; x = undefined;

剩余运算符

let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40};
// a = 10; b = 20; rest = {c: 30, d: 40}

解构默认值

let {a = 10, b = 5} = {a: 3};
// a = 3; b = 5;
let {a: aa = 10, b: bb = 5} = {a: 3};
// aa = 3; bb = 5;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 三,字符串扩展 3.1 Unicode表示法 ES6 做出了改进,只要将码点放入大括号,就能正确解读该字符。有了这...
    eastbaby阅读 5,455评论 0 8
  • ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 1....
    小挠许阅读 2,854评论 0 1
  • 前面的话 我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段。在ES6中添加了可以简化这种任务的新特性...
    sunnyghx阅读 4,086评论 0 0
  • 前面的话   我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段。在ES6中添加了可以简化这种任务的新...
    CodeMT阅读 3,421评论 0 0
  • 春夏的时候,院子的薄荷无法无天,它们将自己清香而矫健的身姿越过萱草,越过姜百合然后向着我最爱的绣球伸出了橄榄枝。对...
    只闻清香不见花阅读 5,209评论 33 54