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

本文探讨了在JavaScript中因变量作用域而导致的变量覆盖问题,特别是在使用getElementsByName函数时,for循环中的变量被函数内部同名变量覆盖的情况。通过引入var关键字和ES6的let声明,有效避免了这一问题。

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

问题为:

 

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

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

循环变量。

Solution如下:

浏览器开发环境:

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

循环变量。

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值