美文网首页
ES6.3--数组解构

ES6.3--数组解构

作者: flyingtoparis | 来源:发表于2017-09-18 14:31 被阅读0次

数组的解构赋值

  1. 基本用法 模式匹配,只要等式的两边的模式相同,左边的变量就会被赋予相应的值。
//ES5
var a = 1;
var b = 2;
var c = 3;

//ES6
var [a,b,c] = [1,2,3];
let [foo,[[bar],baz]] = [1,[[2],3]];  // foo = 1,bar = 2, baz = 3
let [ , , third] = ['foo','bar','baz']; // third = 'baz'
let [x, , y] = [1,2,3] // x = 1,y=3
let [head,...tail] = [1,2,3,4]; // head = 1, tail = [2,3,4]

  1. 解构不成功,就是undefined
let [x,y,...z] = ['a']; // x = 'a',y => undefined , z = []
  1. 不完全解构
let [x,y] = [1,2,3];  // x = 1, y = 2
let [a,[b],d] = [1,[2,3],4]; // a = 1, b = 2, d = 4

  1. 如果等号的右边不是数组(不是可遍历的结果)那么将会报错。
let [foo] = 1;
let [foo] = false;
let [foo] = NaN,undefined,null,{},
  1. 数据结构具有iterator接口,都可以采用数组形式的解构赋值
let [x,y,z] = new Set(['a','b','c']); // x = 'a', y = 'b', z = 'c'
  1. 解构赋值允许默认值
var [foo = true] = []; // foo = true

let [x,y='b'] = ['a']; // x = 'a', y = 'b'

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

let [x=1]=[null]    // x=null

ES6内部使用严格相等运算符(===)判断一个位置是否有值,如果一个数组成员是null,默认值就不会生效,因为null不严格等于undefined

7.如果默认值是一个表达式,那么表达式是惰性求值的,即只有在用到的时候才会求值。

function f(){
  console.log('aaa')
}
let [x=f()]=[1];
//因为x能取到值,所有f根本不会执行

8.默认值可以引用解构赋值的其他变量,但是该变量必须已经声明了

let [x=1,y=x] = [];  //x=1;y=1;
let [x=y,y=1]=[];  // 报错

相关文章

  • ES6.3--数组解构

    数组的解构赋值 基本用法 模式匹配,只要等式的两边的模式相同,左边的变量就会被赋予相应的值。 解构不成功,就是un...

  • 3.解构赋值

    解构的分类 对象解构 数组解构 混合解构 解构参数 对象解构 解构赋值 嵌套对象解构 数组解构 数组解构 选择性的...

  • ECMAScript6 -- 解构赋值

    解构赋值 数组的解构赋值 对象的解构赋值 特殊: 数组的解构赋值 如果右边不是数组,默认转换为类数组 对象的解构赋...

  • ES6系列 (六)解构

    目标 解构对象 解构数组 结合数组解构和对象解构 了解解构的类型 思考 解构对象 使用解构语句解构数据结构,提取n...

  • ES6之解构表达式

    数组解构 对象解构

  • ES6之解构

    对象解构 解构赋值 默认值 数组解构 数组解构的语法看起来与对象解构非常相似,只是将对象字面量替换成了数组字面量。...

  • 解构赋值

    解构赋值 解构赋值可分为数组解构赋值和对象解构赋值,数组解构赋值要求右侧必须可迭代(具有Iterator 接口),...

  • ES6解构赋值、交换两个变量的值、设置函数默认值、模板字符串、箭

    1,解构赋值 解构赋值主要包括数组的解构赋值、对象的解构赋值、字符串的解构赋值、函数参数的解构赋值。 (1)数组的...

  • 解构赋值,设置函数默认值,箭头函数

    1,解构赋值 解构赋值主要包括数组的解构赋值、对象的解构赋值、字符串的解构赋值、函数参数的解构赋值。 (1)数组的...

  • 数组解构、混合结构以及参数结构

    《深入理解ES6》阅读随笔 数组解构 数组解构跟对象解构类似,同样具有数据提取、解构赋值、设置默认值、嵌套解构等特...

网友评论

      本文标题:ES6.3--数组解构

      本文链接:https://www.haomeiwen.com/subject/dghbsxtx.html