我有两个javascript代码。 两个代码用于同一项工作,但有一个代码工作,另一个代码不起作用。
工作
var i = 0;
function slideShow(){
i++;
document.getElementsByName('SearchBox')[0].value = i
setTimeout(slideShow, 1000);
}
无效
var i = 0;
function slideShow(){
setTimeout(function(){
i++;
document.getElementsByName('SearchBox')[0].value = i
}, 1000);
}
为什么一个有效,另一个无效
答案 0 :(得分:3)
第一个版本在调用时会执行某些操作,然后设置超时以再次调用自身。
第二个版本在调用时会设置超时以执行某些代码。它确实不再调用自己。
答案 1 :(得分:1)
在第一个示例中,slideShow
将自身传递给setTimeout
,因此每次运行时,它都将通过将自身设置为在经过一秒钟后再次运行而结束。
在第二个例子中,这不会发生。所以该功能只运行一次。
答案 2 :(得分:1)
它们在功能上并不相同。
在第一个(工作)片段中,在slideShow()
的电话会议上它确实是这样,然后在1秒后安排另一个电话。
第二个版本仅计划一次匿名函数的调用。在任何时候都不会再安排函数调用