当前位置:编程学习 > JS >>

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);
答案:这是因为你的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时间控件

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,