es6 在使用let设置循环变量的时候,设置循环变量的那部分是一个父作用域,循环体内部是一个单独的子作用域。如果循环体内部重新使用let声明一个和循环变量重名的变量,那么该变量不会影响父作用域中的循环变量,例如:
for(let i = 0; i < 3; i++) { let i = 'abc'; console.log(i); } //abc //abc //abc
输出三次abc,不影响父作用域中的i,不会输出0,1,2
如果在循环体中不重新声明变量i的话,那么循环体中依旧使用父作用域中的循环变量i,结果会输出0,1,2