JS之let与const关键字

本文详细介绍了ES6中let和const关键字的特点与用法,并对比了它们与传统var关键字的区别。此外,还概述了ES6提供的其他四种声明变量的方法:import、class、let和const。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.let关键字

先放let关键字声明变量的特点总结:

1.let关键字可以将变量绑定到当前所在作用域(通常是{ … }内部)2.无法在块级作用域之外的地方访问使用let命令声明的变量3.不允许使用let关键字多次声明同一个变量4.不存在变量提升,使用let关键字声明的变量一定要在声明之后使用,否则将报错##### 1.let关键字可以将变量绑定到当前所在作用域(2.无法在块级作用域之外访问声明的变量)

js的函数作用域不用说了,在函数内不论是用var还是let声明的变量是无法直接被外界访问到的。

但是JS的块级作用域,如:for(){ .. }if(){ .. }{ .. }代码块等这种都是属于块级作用域,在这些块级作用域中使用var关键字声明的变量,是可以直接在块级作用域以外的地方访问到的,这样会增加污染全局变量的风险。

就像这样:

 var a = 1;

	if (true) {
		var a = 2
	}

	console.log(a) // a 

由于if循环里用var关键字重新给a赋了值,因此打印出来a是2。我们肯定不希望全局的a = 1被污染,此时用let关键字就可以解决这个问题:

 var a = 1;

	if (true) {
		let a = 2
	}

	console.log(a) // 1 

此时在for循环里用let声明的a就被绑定到了这个for循环块级作用域中,在for循环代码块之外也就无法访问到了

3.不允许使用let关键字多次声明同一个变量

这个非常容易理解了,就是一个变量无法用let关键字声明多次。

使用var关键字可以将同一个变量a多次声明为不同的值,但是使用let关键字声明的变量却只能声明一次,否则将报错:

let a = 1
let a = 2 // Uncaught SyntaxError: Identifier 'a' has already been declared 
4.不存在变量提升

var关键字声明的变量存在变量提升问题,就像下面:

 console.log(a); // undefined
	var a = 1 

上面的var a = 1会被拆分成这样:

var a 
console.log(a) // undefined
a = 1 

这就是变量提升,用var关键字声明的变量会先被提升到所在作用域的最顶端,等实际赋值时才将a赋值为1。

let关键字就可以避免这个问题,它会提前抛出异常:

 console.log(a); // Uncaught ReferenceError: Cannot access 'a' before initialization
	let a = 1 

2. const关键字

const关键字用来声明只读的一个常量。用const声明的变量的值无法被修改。不过需要注意的是声明的变量的类型是基础类型还是引用类型。

  • 基础类型(Number、Boolean、String等)值就保存在变量指向的那个内存地址,因此等同于常量。* 引用类型(Object、Array等)变量保存的只是一个指向书记数据的指针,const只能保证指向这个指针的值是不变的,至于它的数据结构是否改变时无法控制的const关键字和let一样也可以把当前变量绑定到当前作用域中。

3.ES6声明变量的6中方法

ES5只有两种声明变量的方式:varfunction。ES6除了添加letconst命令,还加了两种声明变量的方式:importclass命令

最后

最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值