随笔 - 24  文章 - 0  评论 - 0  阅读 - 8474

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   zhanlanzzz  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示