Ecmascript-6
ES6 发布时间2015-6月,又称ECMAScript 2015
http://kangax.github.io/compat-table/es6/
作用域
let const
let
块级作用域
- 在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死 区”(temporal dead zone,简称TDZ)
- 不允许重复声明
- let声明的变量不属于window的属性
console.info(c); let c;
typeof c; let c;
var tmp =123; if(true) { tmp = 456; let tmp; }
var flag = true;
if(flag) {
let flag;
}
为什么引入块级作用域
- 内层变量覆盖外层变量
- 内层变量泄漏到全局变量
const
常量
- 常量值必须初始化声明
- 一旦声明,常量的值就不会改变
- 与let一致,存在暂时性死 区
跨模块常量
a.js
export const A = 1;
export constt B = 2;
b.js
improt * as Constants from './a'
console.info(Constants.A); //1
c.js
import {A, B} from './a'
console.info(A);
解构赋值
数组解构赋值
语法
var [v1,v2...vn] = array
let [v1,v2...vn] = array
const [v1,v2...vn] = array
var [a,b,c,d] = [1,2,3,4];
console.info(a);
对象解构赋值
语法
var {v1, v2,...vn } = { vn....v2..v1}
字符串解构赋值
语法
const [a,bc,c] = 'hello-string';
console.info(a,b,c);
用途
- 变换变量的值 [x, y] = [y, x]
- 从函数返回多个值 return [1,2,3] return {foo:1, bar:2}
- 函数入参默认值
- 迭代map很方便 for( let [key,value] of map)
- 模块加载-》 const { sourcemap } = require("source-map");