什么都2022年了你还不了解var let const 的区别,赶紧来学


前言

本文讲解了var let const 的区别,也是比较重要的知识点,是es6面试题的常客了,如果本文有哪里错误或需要改进的欢迎评论,然后就是觉得本文章对你有帮助的话就三连支持一下吧,你的支持是我更新的动力。


以下是本篇文章正文内容,可供参考

一、var let const 的共同点

var let const的共同点都是可以生成变量的

var a1='关'
let a2='注'
const a3='我'
console.log(a1,a2,a3)

在这里插入图片描述
可以看到不管使用哪个都是没有问题的。


二、var let const 的区别

区别1

我们都知道在javascript当中有一个很神奇的东西叫做变量提升或者叫做悬挂声明,那这是什么意思呢?

列如:
使用var 声明变量时 先打印再声明会发生什么呢?

console.log(str)

var str = 1

结果
在这里插入图片描述
那我们把var换成let进行声明呢?

console.log(str)

let str = 1

在这里插入图片描述
然后就报错了,所以证明了 let 是没有变量提升的,const也是一样没有变量提升的。


区别2

看以下代码

var a =1
var a =2

console.log(a)

在这里插入图片描述
可以看到后者覆盖了前者,使用var是没有问题的,一个变量可以声明n多次都是没有问题的。但是如果换成了letconst

let a =1
let a =2

console.log(a)

在这里插入图片描述
可以看到会报错了,所以可以得出,var可以多次声明同一个变量,let``const不可以多次声明同一个变量。


区别3

好的我来做一个值的修改来看看:

var str = 1
str=2
console.log(str)

let str2 = 1
str2=2
console.log(str2)

const str3 = 1
str3=2
console.log(str3)

在这里插入图片描述
可以看到var let是没有问题的,而const就出错了,那是为什么呢?是这样的在es6中var let是声明变量的,const是用来声明常量的,常量就是不经常变换的量。
const 还有一种情况:

const obj={
    
    
	a:1
}
obj.a=123
console.log(obj)

在这里插入图片描述
可以看到没报错,这是因为我修改的不是常量声明的而是对象里面的值,因为a:1他不是常量所声明的。

我们还可以:

const arr =[1,2,3]
arr[0]='jj'
console.log(arr)

区别4

我们都知道JS当中是没有块级作用域的,那没有块级作用域就会造成一个问题,举个栗子:

if(true){
    
    
	var str = '123'
}
console.log(str)

这段代码是没有问题的,是因为JS当中除了函数外是没有作用域的,但是如果换成了let或者const 就会报错由此得出var声明变量是没有自身的作用域的let const声明的变量有自身的作用域。


总结

共同点

var let const的共同点都是可以生成变量的。

不同点

区别一
var具有变量提升的机制,let const是没有变量提升的机制

区别二
var可以多次声明同一个变量,let``const不可以多次声明同一个变量

区别三

var let声明的变量可以再次赋值,但const不可以再次赋值了。

区别四

var声明变量是没有自身的作用域的

let const声明的变量有自身的作用域

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_71170351/article/details/125257442