js全局变量的问题:请问这里的i 是全局变量吗,为什么for语句结束了还可以被访问
/* this won't behave as we want it to; */ /* every click will alert 5 */ for (var i=0; i<5; i++) { $('<p>click me</p>').appendTo('body').click(function() { alert(i); }); } alert(i);
/* this won't behave as we want it to; */ /* every click will alert 5 */ for (var i=0; i<5; i++) { $('<p>click me</p>').appendTo('body').click(function() { alert(i); }); } alert(i);
答案:这是因为你的for循环没有放在一个方法内,所以浏览器定义的i这个变量的时候就当做了全局变量。因为不在方法内部的js语句浏览器默认就是立即执行。你可以把你的语句放在一个方法里面试试,然后你在方法外面alert这个i应该就不会出现了。
不过,我感觉你点击每个p元素的时候alert弹出的都是5.
其他:for (var i=0; i<5; i++) {
$('<p>click me</p>').appendTo('body').click(function() {
alert(i);
});
}
alert(i);
||
V
var i;
for (i=0; i<5; i++) {
$('<p>click me</p>').appendTo('body').click(function() {
alert(i);
});
}
alert(i);
上一个:关于js切换背景图片的问题
下一个:求一款只显示小时分钟的JS时间控件