在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)