Skip to content

ES6

ES6 是 ECMAScript6 的简称,又称为 ECMAScript2015,所以也叫作 ES2015

JavaScript = ECMA + DOM + BOM;

ECMA

  1. 是一个组织,又是一门语言的标准和规范,目前为止,只有 JavaScript 实现了这个标准和规范,大多数情况下,我们近似认为 JavaScript 就是 ECMA
  2. JavaScript 就是 ECMA
  3. ES6 本质还是 JavaScript,之前学习的 JavaScript 是 ES5,现在的 ES6 是在 ES5 基础上新增了一些好用的 API(属性和方法),让我们写代码更方便;

变量

var

  1. var 会做变量提升,正常情况下,在同一个作用域中,变量应该先定义再使用;

    js
    alert(a); // undefined,正常情况下应该报错
    var a = 1;
    
    alert(x); // undefined
    var x = 2;
    alert(x); // 2
  2. 在同一个作用域中,变量会重复声明(本不应该重复声明)

    js
    var x = 1;
    var x = 2;
    alert(x); // 2
  3. 不能限制修改,var 不可以声明常量;

    js
    var pi = Math.PI;
    pi = "yang";
  4. 不存在块级作用域(一个大括号就是一个块)

    js
    {
      var x = 1;
    }
    alert(x); // 1

    鉴于以上的缺点,ES6 很好的解决了这几个问题,ES6 在变量上扩展了两个新的关键字

ES6 关键字

let:是 ES6 中证明变量的关键字,取代了 ES5 的 var

  1. 先定义,再使用,let 没有变量提升
  2. 在同一个作用域下,不可以重复定义,否则会报错

const:const 是 ES6 声明常量的关键字,

  1. const 定义常量,一旦定义,不可以重新赋值

  2. 常量在定义的时候必须做初始化操作(声明并赋值必须在同一句中完成)

js
// 正确:
const USER_NAME = 'YANG';
// 错误:
const USER_NAME;
USER_NAME = 'YANG';
  1. 常量名一般全部大写,不同的的单词用下划线连接
js
const USER_NAME = "root";
const NAME = "Curry";
  1. 不可以修改常量

闭包

两个作用域嵌套,内部作用域用到了外部作用域的变量或者参数,从而导致变量或参数会被保存下来,供内部作用域使用,从而不会被垃圾回收机制回收。