Appearance
ES6
ES6 是 ECMAScript6 的简称,又称为 ECMAScript2015,所以也叫作 ES2015
JavaScript = ECMA + DOM + BOM;
ECMA
- 是一个组织,又是一门语言的标准和规范,目前为止,只有 JavaScript 实现了这个标准和规范,大多数情况下,我们近似认为 JavaScript 就是 ECMA
- JavaScript 就是 ECMA
- ES6 本质还是 JavaScript,之前学习的 JavaScript 是 ES5,现在的 ES6 是在 ES5 基础上新增了一些好用的 API(属性和方法),让我们写代码更方便;
变量
var
var 会做变量提升,正常情况下,在同一个作用域中,变量应该先定义再使用;
jsalert(a); // undefined,正常情况下应该报错 var a = 1; alert(x); // undefined var x = 2; alert(x); // 2在同一个作用域中,变量会重复声明(本不应该重复声明)
jsvar x = 1; var x = 2; alert(x); // 2不能限制修改,var 不可以声明常量;
jsvar pi = Math.PI; pi = "yang";不存在块级作用域(一个大括号就是一个块)
js{ var x = 1; } alert(x); // 1鉴于以上的缺点,ES6 很好的解决了这几个问题,ES6 在变量上扩展了两个新的关键字
ES6 关键字
let:是 ES6 中证明变量的关键字,取代了 ES5 的 var
- 先定义,再使用,let 没有变量提升
- 在同一个作用域下,不可以重复定义,否则会报错
const:const 是 ES6 声明常量的关键字,
const 定义常量,一旦定义,不可以重新赋值
常量在定义的时候必须做初始化操作(声明并赋值必须在同一句中完成)
js
// 正确:
const USER_NAME = 'YANG';
// 错误:
const USER_NAME;
USER_NAME = 'YANG';- 常量名一般全部大写,不同的的单词用下划线连接
js
const USER_NAME = "root";
const NAME = "Curry";- 不可以修改常量
闭包
两个作用域嵌套,内部作用域用到了外部作用域的变量或者参数,从而导致变量或参数会被保存下来,供内部作用域使用,从而不会被垃圾回收机制回收。