刚接触JS,也没看ES6的标准,在使用的时候带着一些写python的习惯。遇到了一个函数中的变量被覆盖的问题,最后靠自己猜解决了。

问题为:

JS 外层调用函数循环体中的变量被内层被调用函数中的同名变量覆盖问题

 

在addCases中调用getElementsByTagName函数,在for循环语句中的ip变量被getInputByName中的同名变量覆盖了。,解决办法,在for循环语句中申明变量ip时候加上"var"。

原因是如果默认变量是以“var”的方式声明的,var声明的变量属于全局变量,所以在循环体中被调用的函数中声明的ip变量覆盖了

循环变量。

Solution如下:

JS 外层调用函数循环体中的变量被内层被调用函数中的同名变量覆盖问题

浏览器开发环境:

JS 外层调用函数循环体中的变量被内层被调用函数中的同名变量覆盖问题

原因是如果默认变量是以“var”的方式声明的,var声明的变量属于全局变量,所以在循环体中被调用的函数中声明的ip变量覆盖了

循环变量。

看了阮一峰的《ES6标准入门》中在介绍块级作用域的时候提到了,循环变量泄露为全局变量的问题。所以安全起见,循环变量可以全部设置为以let 声明。

 

 

相关文章: