ECMAScript6简介

ECMAScript和JavaScript的关系

ECMAScript6是JavaScript语言的下一代标准,2015年6月正式发布。Mozilla公司将在这个标准的基础上,推出JavaScript2.0

ECMAScript是JavaScript语言的国际标准,而JavaScript是ECMAScript的实现

浏览器兼容

https://github.com/paulmillr/es6-shim

let命令

基本用法

ES6新增了let命令,用来声明变量。用法类似于var,但所生命的变量,只在let命令所在的代码块内有效

不存在变量提升

let不像var那样会存在变量提升

暂时性死区

只要块级作用域内存在let命令,它所生命的变量就’绑定’(binding)这个区域,不在受外部影响

不允许重复声明

let不允许在相同作用域内,重复声明同一个变量

const命令

const也用来声明常量,一旦声明常量的值不可改变。

跨模块常量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//module.js
export const variantName = 'Lily';
export const floatcount = 3.1.4
//use.js
//导入全部
import * as var variant from './module';
console.log(variant.variantName);
//导入某一个
import variantName as variant from './module';
//导入某几个
import { variantName , floatcount} as variant from './module'

全局对象属性

全局对象是最顶层的对象,在浏览器环境指的是window对象,在Node.js指的是global对象。在JavaScript语言中,所有全局变量都是全局对象的属性。(Node的情况比较特,这一条只对REPL环境适用,模块环境必须显式生命global属性)

ES6规定,var命令和function命令声明的全局变量,属于全局对象的属性;let命令、const命令、class命令声明的全局变量,不属于全局对象的属性

1
2
3
4
5
6
7
8
9
var name = 'test';
//浏览器环境下
console.log(window.name); //输出 name
//node.js环境下
console.log(global.name); //输出 name
//通用环境下
console.log(this.name); //输出 name