ES2015 特性
1、属性和方法的简写
// new
var person = {
name,
age,
sayHello () {
alert( 'hello! my name is ' + this.name );
}
};
// old
var person = {
name: name,
age: age,
sayHello: function () {
alert( 'hello! my name is ' + this.name );
}
};
2、计算属性
// new
var obj = {
[a]: 1
};
// old
var obj = {};
obj[a] = 1;
3、let和const
- let是更完美的var
- let声明的变量拥有块级作用域。
- let声明的全局变量不是全局对象的属性。
- 形如for (let x...)的循环在每次迭代时都为x创建新的绑定。
- let声明的变量直到控制流到达该变量被定义的代码行时才会被装载,所以在到达之前使用该变量会触发错误。
- 用let重定义变量会抛出一个语法错误(SyntaxError)。
- const:与let类似,然而
- const声明的变量只可以在声明时赋值,不可随意修改,否则会导致SyntaxError(语法错误)
- const声明变量后必须要赋值,否则也抛出语法错误。
4、展开运算符
// new
function test(a,b,c) { }
var args = [0,1,2];
test(...args);
// old
function test(a, b, c) { }
var args = [0, 1, 2];
test.apply(null, args);
5、模块
// Default exports and named exports
import theDefault, { named1, named2 } from 'src/mylib';
import theDefault from 'src/mylib';
import { named1, named2 } from 'src/mylib';
// Renaming: import named1 as myNamed1
import { named1 as myNamed1, named2 } from 'src/mylib';
// Importing the module as an object
// (with one property per named export)
import * as mylib from 'src/mylib';
// Only load the module, don’t import anything
import 'src/mylib';