一、const作用:用来声明常量,即不能变化的量
1.块级作用域
if (true) {
const a = 0;
console.log(a)//0
if (true) {
const a = 10;
console.log(a)//10
}
}
console.log(a)//报错,a未定义
2.先声明再使用
console.log(a)//报错,a未定义
const a = 10
3.同个块级下,声明常量的时候,应该初始化, 并且声明后值不可更改
const a;
console.log(a) //报错信息,a没有初始化
//常数变量不能重复赋值
const b = 10;
b = 20
console.log(b)//报错
//const可以修改复杂数据类型的值,比如数组对象等,但是不能给复杂数据类型直接赋值
const c = [30, 40]
c[0] = 50
console.log(c)//输出结果为[50,40],
c = [60, 70]
console.log(c)//报错
二、let作用
1.块级作用域,和const用法一样
2.先声明再使用,和const用法一样
3.暂时性死区
//在块级{}里用let声明了变量num,则num会和{}内进行绑定,与外部的num无关
var num = 10
if (true) {
console.log(num)//报错,num未定义
let num = 20
}
4.let和var用法经典面试题
for (var i = 0; i < 6; i++) {
setTimeout(() => {
console.log(i)//输出6个6
})
}
for (let i = 0; i < 6; i++) {
setTimeout(() => {
console.log(i)//输出0、1、2、3、4、5
})
}
三、var的作用
1.全局作用域
2.变量可以先使用再声明(本身就是一个bug)
四、总结
如果使用的变量值不需要变化可使用const来定义,比如函数,数学公式值等等,js在解析的时候不用时时监控该值的变化,效率会更高