对于for循环中使用let或var时,i的作用域范围的记录

在for循环中使用let时,结果如下

 

for内部定义的i在循环结束后不会覆盖外部的i

 

 

 

在for循环中使用var,且不控制i的作用域时,结果如下

 

 

第一个for循环内部定义的i并不会创建,而是直接使用外部中的i,故在循环结束时外部的i变为了5。

第二个for循环直接使用了外部的i

 

 

 

把第一个for循环存于匿名函数中,第二个for循环使用var创建变量i,结果如下

 

 

第一个for循环置于匿名函数,会创建一个在作用域在匿名函数的i,第二个for循环并未创建i而是直接对外部的i进行赋值

 

在for循环中使用var创建变量,结果如下

内部使用var创建的变量可以在for循环外部获取,而i不可获取

 

在for循环中使用let创建变量,结果如下

在for循环内部使用let创建变量时,for循环外部不能获取该变量。

哪怕在let定义的代码块中,使用var创建变量还是会让该变量存在于全局或整个函数块中。

 

-----------------------------------------------------分割线-------------------------------------------
跑去看了看var的定义范围,我为什么要测试这个啊,明明写的很明白。

“let允许你声明一个作用域被限制在块级中的变量、语句或者表达式。

var声明的变量只能是全局或者整个函数块的。”--------------来自MDN的let页面(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/let)

posted @ 2019-02-15 13:19  FreezeNow  阅读(802)  评论(0编辑  收藏  举报