ES6 - let、const

本文介绍了ES6中let和const声明变量的特性,包括块级作用域、防止变量覆盖、无变量提升、不可在顶层作用域访问以及暂时性死区TDZ的概念。let确保了变量的安全使用,而const则用于声明不可变的常量。了解这些概念有助于编写更稳定的JavaScript代码。
摘要由CSDN通过智能技术生成

在ES5中,声明变量只有var和function两种形式。但是因为var声明的变量会有一定的缺点,内层变量可能覆盖外层变量的问题以及用来计数的循环变量泄露为全局变量。

ES6提出了使用let和const声明变量,更加安全方便的提供我们声明变量。

var

在ES6以前存在全局作用域和函数作用域两种。没有块级作用域的说法。并且存在变量提升。

let

1.块级作用域 { }

  • 作用域只在他所在的代码块
  • 一个 { } 可以看作一个作用域
  • if语句和 for语句里面的{ }也属于块作用域

2.let 不允许在相同的作用域内,重复声明同一个变量。

3.不存在变量提升
只有用var 声明的变量才会有变量提升,let 和const 都不用考虑

4.脱离顶层作用域
var 声明的变量,可以通过window.变量名的形式使用。
但是用let/const声明的变量不会绑定在顶层作用域window或globle中。

5.暂时性死区 TDZ
TDZ又称暂时性死区,意思是变量在作用域内已经存在,必须在 let / const声明后面使用。
ES6明确规定,如果区块中存在let/const命令,这个区块用这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用的变量,就会报错
TDZ本质:只要一进入当前作用域,所要使用的变量就已经存在,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量
TDZ能够让开发者养成先声明后使用的习惯,让程序更加的稳定。

const

  • const 声明一个只读的常量,一旦声明,常量值就不可以改变。所以const一旦声明就必须立即初始化。
  • 只声明,不赋值,会报错(注意:var let 只声明不赋值 : undefined)
  • 不能重新赋值const定义的值,但是可以修改const’声明的对象类型。
  • const 的作用域与let命令相同,只在声明所在的块级作用域内有效
  • const声明的变量也不存在变量提升,同样存在暂时性死区,只能在声明位置的后面使用
  • const声明的常量和let一样不可重复声明
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值