带你1分钟了解var let const的区别

写在前面

这篇文章主要讲解JS中var,let和const的区别,对于很多初学者小白同学来说可能还是不太了解,让我们一起来看看吧。

var声明的变量在声明前使用不会报错

var 对于我们来说是最常见不过了,这货出来的很早,是用来声明变量的,当然也存在一些问题后面我们细说,先来看一段代码。

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

第三行输出的是1毫无疑问,但是这里要注意的是:var 声明的变量在声明前使用并不会报错,而只是输出一个undefined,这就是我们所说的变量提升。在工作中我们谁也不希望使用一个变量的时候不知道它是在哪里声明的,我们更希望的是代码从上往下的按顺序执行,但是这个问题不能去修复,全世界很多的网站都利用了var的这个特性,如果一修复网站全崩了这就会造成很大的损失,所以var的这个特性一直被保留到了现在,所以才有了后来的let和const.

污染顶层对象

接下来我们再看一段代码:

<script>
	var b = 2
	console.log(window.b) // 2
</script>

当我们在全局作用域里声明变量的的时候,这个变量会自动挂载为全局对象window的属性,也就是说会污染顶层对象,这也是var的一个不好的地方。

多次声明不会报错

var b = 1
var b = 2
console.log(b) // 2

上面可以看出var可以多次声明同一个变量却不会报错,这也是我们工作中不愿意看到的,假设别人前面声明了一个变量后面的人同样声明了这个变量却不会报错,这可能就会导致我们的代码存在一些隐患。

let和const

let和const同为ES6才出来的,同样用于声明变量。

声明前使用会报错

console.log(b) // Uncaught ReferenceError: Cannot access 'b' before initialization
var b = 1

console.log(c) // Uncaught ReferenceError: Cannot access 'c' before initialization
const c = 2

在这里,我们试着在声明之前来使用变量,但是都报错了,let和const 则不会存在var那样的问题,这样使得我们的代码更加严谨。

多次声明会报错


```javascript
let b = 1
let b = 2 // Uncaught SyntaxError: Identifier 'b' has already been declared

const c = 1 
const c = 2 // Uncaught SyntaxError: Identifier 'c' has already been declared

const声明的叫做常量 不允许改变 必须立刻赋值

const b //这里声明b不赋值就会报错
// Uncaught SyntaxError: Missing initializer in const declaration

const c = 1
c = 2 // VM311:2 Uncaught TypeError: Assignment to constant variable

相信看到了这里,大家已经了解了它们之间的区别了,今天就到这里啦,下次我们再一起分享,前端的小伙伴们可以给个关注哦,大家一起加油。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值