浅谈es6的变量let、const、var

一、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在解析的时候不用时时监控该值的变化,效率会更高

猜你喜欢

转载自blog.csdn.net/weixin_43901550/article/details/105635653