let,const,var的区别

本文探讨了ES5与ES6中变量声明的差异,重点在于let和const的特性。let避免了var的变量提升问题,不存在重复声明,并引入了暂时性死区概念。const声明的变量必须初始化,且其值不可更改,但其指向的内存地址不可变,而非变量本身不可变。这些特性有助于防止变量污染和提高代码的可读性。
摘要由CSDN通过智能技术生成

1.变量提升

在我们es5中没有let,const所以大家都用var来声明变量,用var声明变量有一特点,就是会有变量提升的情况.let和const声明的变量则不会出现这种情况,示例如下:

function foo(){
console.log(a)//undefined
var a = 2;
}
function foo2(){
console.log(a)//直接报错
let a = 2;
}

2.重复声明

用var来声明同一个变量时相当于二次赋值,let则会直接报错,示例如下:

var a = 1
var a = 2
console.log(a)//2
let b = 1
let b = 2
console.log(a)//报错

3.暂时性死区

暂时性死区的概念其实在变量提升中可以体现出,在使用let、const命令声明变量之前,该变量都是不可用的。这在语法上,称为暂时性死区。使用var声明的变量不存在暂时性死区。示例如下:

function foo2(){
console.log(a)//直接报错,在暂时性死区
let a = 2;
}

4.块级作用域

块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域。
所以let和const可以很好地解决变量污染的问题

5.const的初始值设置,与不能改变

  1. const相比较于let和var还有一个特性就是const在声明一个变量时必须给变量添加初始值,示例如下:
const a;//报语法错误
let b;//undefined
var c;//undefined 
  1. const的另一特性就是const声明的是一个常量,常量不能改变

注意:const保证的并不是变量的值不能改动,而是变量指向的那个内存地址不能改动。当const声明的是一个应用型数据类型时,只是指针不能改变,至于它指向的数据结构是可以改变的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值