如图所示,刚开始在for循环语句块中使用let声明变量i,跟预期一样,在语句块外面无法获取i的值。然后我把let换成var之后便可以在外面获取到i的值了,到这为止都很正常。然而诡异的事情发生了,再把var换回let时,居然在语句块外面能访问到i的值了!而且i的上一次结果还被保留了!实现了在语句块外面递增!
这是个什么情况?!用的是Firefox 47.0.1
如图所示,刚开始在for循环语句块中使用let声明变量i,跟预期一样,在语句块外面无法获取i的值。然后我把let换成var之后便可以在外面获取到i的值了,到这为止都很正常。然而诡异的事情发生了,再把var换回let时,居然在语句块外面能访问到i的值了!而且i的上一次结果还被保留了!实现了在语句块外面递增!
这是个什么情况?!用的是Firefox 47.0.1
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
var 之后生成了一个全局变量,当然可以取到了,递增的 i 还是上次 var 定义的 i,不是 let 的 i