发布网友 发布时间:2022-04-22 09:14
共4个回答
热心网友 时间:2023-07-14 20:19
setTimeout(参数1, 参数2);
先说参数2,很明了,就是一个时长,单位是秒。
再说参数1,当它的类型是function的时候,是一个函数的引用,其意义是多少秒后,执行该函数;当它的类型是字符串时,它将为被内部包装一个成一个类似于下面的匿名函数:
function(){evel(参数1);},然后是多少秒后,后执行该匿名函数。你这里的写法,就像是function(){alert(i);}
而你这里i是没有地方定义的,所以会未定义错误。
而你test函数i只不过是其局部变量。
这里给出了两种实现方式,尤其是第二种,这里你需要对js闭包有一些了解:
function test(){
for(var i=0; i<5; i++){
setTimeout('alert(' + i + ')',1000);
}
}
test();
function test(){
for (var i=0; i<5; i++){
setTimeout((function(k){return function(){alert(k);}})(i),1000);
}
}
test();
热心网友 时间:2023-07-14 20:19
因为i是局部变量的原因,修改为setTimeout('alert(' + i + ')', 1000);就行了
热心网友 时间:2023-07-14 20:20
var navLang=navigator.browserLanguage;
var regx=/(en-us|zh-cn)/
var url=navLang.replace(regx,"$1/index.php");
regx.test(navLang)?{}:url="en-us/index.php";
location.href=url;
//一共5行 如果按照你写出来的 当然还可以更短
热心网友 时间:2023-07-14 20:21
因为定时器中的方法还没执行,你的i作为局部变量就被销毁了。。这种情况可以用闭包实现