为什么相同的代码有效并且不能以其他形式工作

时间:2011-07-10 12:16:35

标签: javascript

我有两个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);
}

为什么一个有效,另一个无效

3 个答案:

答案 0 :(得分:3)

第一个版本在调用时会执行某些操作,然后设置超时以再次调用自身。

第二个版本在调用时会设置超时以执行某些代码。它确实不再调用自己

答案 1 :(得分:1)

在第一个示例中,slideShow将自身传递给setTimeout,因此每次运行时,它都将通过将自身设置为在经过一秒钟后再次运行而结束。

在第二个例子中,这不会发生。所以该功能只运行一次。

答案 2 :(得分:1)

它们在功能上并不相同。

在第一个(工作)片段中,在slideShow()的电话会议上它确实是这样,然后在1秒后安排另一个电话。

第二个版本计划一次匿名函数的调用。在任何时候都不会再安排函数调用