es6

Posted pangmin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es6相关的知识,希望对你有一定的参考价值。

定义 :ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构

1.从数组中结构:

 1.1 es6语法

  

//数组结构 
let [a,b,c]=[1,2,3];
//带默认值的数组结构
let [a1,b1="yueban"]=[‘月半琳‘]

let [a2,b2="yueban"]=[‘月半琳‘]

 

 

 

 1.1  转义后的es5语法  

"use strict";

//数组结构 
var a = 1,
    b = 2,
    c = 3;
//带默认值的数组结构

var _ref = [‘月半琳‘],
    a1 = _ref[0],
    _ref$ = _ref[1],
    b1 = _ref$ === undefined ? "yueban" : _ref$;
var _ref2 = [‘月半琳‘],
    a2 = _ref2[0],
    _ref2$ = _ref2[1],
    b2 = _ref2$ === undefined ? "yueban" : _ref2$;

 

可以看出:带默认值得时候解构,会找一个中点变量 _ref 临时保存右边的数组 然后去复制


//默认值可以引用解构赋值的其他变量,但该变量必须已经声明。
let [a3 = 1,b3 = a3]=[‘月半琳‘]
 
2.从对象中结构
  对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。

// 对象结构
let { bar, foo } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"

let { baz } = { foo: "aaa", bar: "bbb" };
baz // undefined

  2.2 es5 

// 对象结构

var _foo$bar = { foo: "aaa", bar: "bbb" },
    bar = _foo$bar.bar,
    foo = _foo$bar.foo;

foo; // "aaa"
bar; // "bbb"

var _foo$bar2 = { foo: "aaa", bar: "bbb" },
    baz = _foo$bar2.baz;

baz; // undefined

  2.2如果变量名与属性名不一致,必须写成下面这样。

  

let { foo: baz } = { foo: ‘aaa‘, bar: ‘bbb‘ };
baz // "aaa"

let obj = { first: ‘hello‘, last: ‘world‘ };
let { first: f, last: l } = obj;
f // ‘hello‘
l // ‘world‘

 

  也就是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。

  3.3与数组一样,解构也可以用于嵌套结构的对象。

  

  

 

 

 




以上是关于es6的主要内容,如果未能解决你的问题,请参考以下文章

ES6 模块串联

ES6解构赋值

ES7-Es8 js代码片段

JavaScript ES6 的let和const

VScode插件推荐

没有名称的Javascript ES6导入[重复]