前情提要
在逛技术社区的过程中遇到这么一个问题:第一个for
循环为什么只输出一次呢?看了题主贴的代码后,觉得比较简单所以就回答了一下。回答完之后就萌生了水一篇文章的想法。
注:内容比较简单,如果喜欢点个赞,不喜勿喷。欢迎在评论区内交流。如果本人观点有错误的地方,恳请大佬多多指点,感谢🙏。
先来看第一个for
循环:
for (var i =0; i < 3; i++) {
var i = 3;
console.log(i)
}
思考一下,这段代码中,会打印几次?打印的内容分别是多少?
答案是只打印一次,打印的内容是 3
。那么为什么会这样呢?其实是js
的变量提升机制导致的。至于代码的详细执行步骤,后续给出。这里先不急,再来看第二个for
循环。
for (var i =0; i < 3; i++) {
const i = 3;
console.log(i)
}
思考一下,这段代码中,会打印几次?打印的内容分别是多少?
答案是打印3
次,打印内容都是3
。那么,这又是为什么呢?只是换了一个关键字来声明变量。竟有如此之区别?其实const
声明的变量在代码块中有作用域,并且不存在变量提升机制。如果在const
声明之前去使用该变量会导致js
报错(阮一峰es6
中讲的暂时性死区)。