ES6基础读书笔记02——let与const关键字

本文详细探讨了ES6中的let和const命令,包括let的块级作用域、不存在变量提升、暂时性死区及不允许重复声明的特点,以及const声明常量的不变性。还介绍了ES6的块级作用域对函数声明的影响和globalThis对象的作用。通过实例解析,帮助读者掌握这两个关键字的使用规范。
摘要由CSDN通过智能技术生成

let和const 命令

文章目录
1.let命令
  1.1 let不存在变量提升
  1.2暂时性死区
  1.3"暂时性死区" 在typeof下不再百分百安全
  1.4不允许重复声明
2.块级作用域
  2.1 ES6块级作用域
  2.2 块级作用域与函数声明 ☆重难(未理解)
3. const 命令
  3.1 本质:
  3.2 ES6 声明变量的六种方法
4. 顶层对象的属性
5. globalThis 对象
  小结

1.let命令

let类似var;用于声明变量;但它声明的变量只在代码块里有效。

{
   
    let a = 10;
    var b = 1;
}

a // a is not defind
b // 1

for循环的计数器;就很适合let命令:

for (let i = 0; i < 10; i ++) {
   
    //....
}
console.log(i);// i is not defind //因为已经出了块了
//如果用var 则可以正常输出1-10

1.1 let不存在变量提升

let不存在变量提升;它必须先声明才可调用

1.2暂时性死区

var tmp = 123;

if (true) {
   
	tmp = 'abb';
    let tmp;
}

上述代码中,存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量前,对tmp赋值会报错。

if (true) {
  // TDZ开始
  tmp = 'abc'; // ReferenceError
  console.log(tmp); // ReferenceError

  let tmp; // TDZ结束 已经声明,后面可以赋值并调用了
  console.log(tmp); // undefined

  tmp = 123;
  console.log(tmp); // 123
}

也就是说:let命令声明变量之前,所有变量使用都会报错(还在“死区TDZ”中);必须先声明再赋值


1.3"暂时性死区" 在typeof下不再百分百安全

typeof x; // ReferenError
let x;

因为let无提升;此时用到x就会报错ReferenError

typeof b // undefind

作为比较,如果一个变量没被声明过完全不存在,用typeof反而不报错;typeof是百分百安全不报错的;这样的设计就是为了让大家养成良好的编程习惯;变量一定要先声明再调用。

1.4不允许重复声明

let不允许在相同作用域内;变量名重名。

function fun()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值