一个新的知识点:
for循环,定义循环变量的那一层,是一个父及作用域,而它内部执行循环的循环体,是一个子作用域。看下面代码:
for(let i=0;i<3;i++) { let i = "abc" console.log(i) }
输出:
// abc
// abc
// abc
从上面这个例子的输出结果,进行分析:
① 结果打印了三次abc,首先说明for循环体内(大括号内)的let i="abc"没有修改for()里的i,如果循环变量的i被修改了,那么for循环就进行不下去了,最多只打印一次就结束了;
② 既然循环体内定义了与for循环的循环变量相同的变量名,且循环变量的值没有被修改,那么就说明,循环体内重新定义的这个i和循环变量的这个i不在同一个作用域内,就正好说明了for循环其实是含有两个作用域的执行环境。