1.let命令

此系列只是本人做的读书笔记,书本链接在这里ES6 入门教程 - ECMAScript 6入门 (ruanyifeng.com)

  es6新增命令let,

 一、基本用法

   1.let声明的变量只在所在的代码块内有效

   2.for循环中的计数器,很适合使用let声明变量(i只在for循环体内有效,在循环体外引用就会报错)

for (let i = 0; i < 10; i++) {
  // ...
}
console.log(i);
// ReferenceError: i is not defined

 

 

 

二、不存在变量提升

  let所声明的变量,必须在声明后再使用,否则报错

  var存在变量提升问题,在声明前使用,值为undefined。

// var 的情况
console.log(foo); // 输出undefined
var foo = 2;
// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;

 

三、暂时性死区

  只要块级作用区内存在let命令,他所声明的变量就绑定这个区域,不再受外部影响

var tmp = 123;
if (true) {
  tmp = 'abc'; // ReferenceError
  let tmp;
}

  ES6 明确规定,如果区块中存在letconst命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

  总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”

 

四、不允许重复声明

  let不允许在相同作用域(同一个块级作用域)内,重复申明同一个变量

function func(arg) {
  let arg;
}
func() // 报错
function func(arg) {
  {
    let arg;
  }
}
func() // 不报错

 

posted on 2022-04-01 16:19  zhanlanzzz  阅读(71)  评论(0)    收藏  举报