Es6(一) let与const

84 阅读2分钟

let:

1.Let定义对象不属于顶层对象window

   let在全局作用域中声明的对象不会成为window对象的属性,为了避免SyntaxError,
   也要确保页面不会重复声明同一个对象。

2.不允许重复声明

   let age;
   let age;//此处会报错SyntaxError,age已经声明过了

3.不存在变量提升

   console.log(age);
   let age=18; //此处报错ReferenceError: age没被定义

4.暂时性死区(声明之前的无法使用)

let声明之前的执行瞬间被称为"暂时性死区",都不会被执行。
   在此之前的所有声明都会抛出ReferenceError

5.块级作用域

   let的存在范围是块级作用域,块级作用域是函数作用域的子集。
    let name='lihua';
     if(true){
       let name='zhangli';
      }
   console.log(name);//name=lihua

   

Const:

1.Const定义对象不属于顶层window对象

   Const定义的对象也不会成为顶层window的对象

2.不允许重复声明

   Const age=18;
   Const age=34;//此处会报错SyntaxError,age已经声明过了

3.不存在变量提升

   console.log(age);
   Const age=18//此处报错ReferenceError: age没被定义

4.暂时性死区(声明之前的无法使用)

Const声明之前的执行瞬间被称为"暂时性死区",都不会被执行。
   在此之前的所有声明都会抛出ReferenceError

5.块级作用域

   Const的存在范围是块级作用域,块级作用域是函数作用域的子集。
     const name='lihua';
     if(true){
       const name='zhangli';
      }
   console.log(name);//name=lihua

总结:

1.const基本与let都是相似的,但要注意的一点是,在定义const变量的时候就要赋初值, 否则会报TypeError的错误。

2.在使用for循环遍历的时候要选择let来定义变量,而不能使用const定义变量,因为这 会导致迭代变量自增。

3.优先选择const来定义变量,let次之。const可以强制变量保持不变,在一般的代码中 基本定义了变量就不会改变,所以选择const会更好一点。