我们来看一个例子
let cc = "coderPan";
function hd() {
console.log(cc);
}
hd();
- 上面这段代码,我们在控制台可以打印出coderPan
let cc = "coderPan";
function hd() {
console.log(cc);
let cc = "coderPan123";
}
hd();
- 上面这段代码,我们运行就会报错,这时候就产生了暂时性死区。我们必须是先声明,再使用。
let cc = "coderPan";
function hd() {
let cc = "coderPan123";
console.log(cc);
}
hd();
- 这样后台就会打印出,coderPan123。
- 这里还涉及到作用域链的问题,当我们打印cc的时候,先会在hd()函数作用域里面找cc。如果找不到,就会向上一次去寻找,直到找到全局作用域,还没有找到,就宣布找不到。
临时性死区这个概念,可以对应到js中变量提升的概念。
变量提升其实是js的一个小毛病。在ES6中纠正了。所以,我强烈建议大家在今后不要使用var,就用const和let。
- 这个小知识点就分享到这里,如有错误,请多多留言指正。