一个新的知识点:

  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循环其实是含有两个作用域的执行环境。

posted on 2020-12-16 16:02  去吃饭了  阅读(190)  评论(0编辑  收藏  举报