首先说以下Javascript 与ECMAScript的关系:JavaScript的创造者Netscape公司将JavaScript提交给国际标准化组织ECMA。1997年,ECMA发布ECMA-262的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript。2015年6月ECMAScript 6正式通过,成为国际标准。下面简要介绍以下ES6在ES5新增的语法。
1 ES6的扩展:Class
ES6的类完全可以看作是构造函数的另一种写法。
class Point{ // … }
typeof Point // “function”
Point === Point.prototype.constructor // true
constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。constructor方法默认返回实例对象(即this)。
Class之间可以通过extends关键字实现继承。
2 ES6的扩展:let命令
let命令用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
{
let a = 10;
var b = 1;
}
a // ReferenceError: a is not defined.
b // 1
let不像var那样会发生“变量提升”现象。所以,变量一定要在声明后使用,否则报错。
console.log(foo); // 输出undefined
console.log(bar); // 报错ReferenceError
var foo = 2;
let bar = 2;
let不允许在相同作用域内,重复声明同一个变量。
3 ES6的扩展:const命令
const 声明一个只读的常量。一旦声明,常量的值就不能改变。
const的作用域与let命令相同,只在声明所在的块级作用域内有效。const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。const声明的常量,也与let一样不可重复声明。
对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址。const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变。
const a = [];