ES6新增语法--let

2020-10-26 15:51:58 浏览数 (1)

什么是ES6

ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。

为什么使用 ES6 ?

每一次标准的诞生都意味着语言的完善,功能的加强。JavaScript语言本身也有一些令人不满意的地方。

  • 变量提升特性增加了程序运行时的不可预测性
  • 语法过于松散,实现相同的功能,不同的人可能会写出不同的代码

ES6新增语法

let(★★★)

ES6中新增了用于声明变量的关键字

let声明的变量只在所处于的块级有效
代码语言:javascript复制
 if (true) { 
     let a = 10;
 }
console.log(a) // a is not defined

注意:使用let关键字声明的变量才具有块级作用域,使用var声明的变量不具备块级作用域特性。

不存在变量提升
代码语言:javascript复制
console.log(a); // a is not defined 
let a = 20;
暂时性死区

利用let声明的变量会绑定在这个块级作用域,不会受外界的影响

代码语言:javascript复制
 var tmp = 123;
 if (true) { 
     tmp = 'abc';
     let tmp; 
 } 
经典面试题
代码语言:javascript复制
 var arr = [];
 for (var i = 0; i < 2; i  ) {
     arr[i] = function () {
         console.log(i); 
     }
 }
 arr[0]();
 arr[1]();
​

经典面试题图解:此题的关键点在于变量i是全局的,函数执行时输出的都是全局作用域下的i值。

代码语言:javascript复制
 let arr = [];
 for (let i = 0; i < 2; i  ) {
     arr[i] = function () {
         console.log(i); 
     }
 }
 arr[0]();
 arr[1]();
​

经典面试题图解:此题的关键点在于每次循环都会产生一个块级作用域,每个块级作用域中的变量都是不同的,函数执行时输出的是自己上一级(循环产生的块级作用域)作用域下的i值.

小结
  • let关键字就是用来声明变量的
  • 使用let关键字声明的变量具有块级作用域
  • 在一个大括号中 使用let关键字声明的变量才具有块级作用域 var关键字是不具备这个特点的
  • 防止循环变量变成全局变量
  • 使用let关键字声明的变量没有变量提升
  • 使用let关键字声明的变量具有暂时性死区特性

0 人点赞