开发中变量的声明

79 阅读1分钟

image.png

var是es5提出的,let、const 是es6提出的,在我们开发中react结合es6基本不使用var来声明变量,如果项目复杂度比较高,代码量比较大,组件的层级结比多,使用var会造成变量覆盖,污染···

那么接下来看看他们的各自的区别:

varletconst
没有块级(全局window或者函数体内)块级作用域(当前代码块)块级作用域(当前代码块)
声明可以不赋值(可修改)声明可以不赋值(可修改)声明的是常量(必须赋值且不能修改)
不存在暂时性死区存在暂时性死区(只能在声明代码块出现才能使用)存在暂时性死区(只能在声明代码块出现才能使用)
存在变量的提升(声明前调用出现undefined)不存在(声明前调用报错)不存在(声明前调用报错)

🤔️什么是暂时性死区:

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

日志输出:undefined

console.log(a); 
let a = 1;

日志报错:image.png

🤔原因分析: ES6新增的let、const关键字声明的变量会产生块级作用域,如果变量在当前作用域中被创建之前被创建出来,由于此时还未完成语法绑定,如果我们访问或使用该变量,就会产生暂时性死区的问题,由此我们可以得知,从变量的创建到语法绑定之间这一段空间,我们就可以理解为‘暂时性死区’