javascript - js一段作用域代码的问题?
本文介绍了javascript - js一段作用域代码的问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
这段代码点击a链接,弹出的都是4,我可以理解i是全局变量,为什么会加到4,for循环里边的i明明加到了3,那跑出来的4?
<a href="" id="1">1</a>
<a href="" id="2">2</a>
<a href="" id="3">3</a>
for (var i = 1; i <= 3; i++) {
var ele = document.getElementById(i);
alert(i);
ele.onclick = function(e) {
e.preventDefault();
alert(i);
}
}
解决方案
1.和i是否是全局变量无关,放在函数作用域下依旧是4
(function(){
for (var i = 1; i <= 3; i++) {
var ele = document.getElementById(i);
alert(i);
ele.onclick = function(e) {
e.preventDefault();
alert(i);
}
}
}());
2 因为for循环是执行i++后再去执行的i<=3的逻辑判断
这篇关于javascript - js一段作用域代码的问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文