2011-07-10 31 views
-1

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

为什么一个工程和其他不起作用

+2

。如果(旧==新){相同; } – sdolgy

+0

“不起作用”会导致任何错误消息吗? –

+0

@Uwe Keim:没有任何错误信息 –

回答

3

的第一个版本,调用时,做一些事情,然后套超时再次调用自己。

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

1

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

在第二个例子中,这没有发生。所以这个函数只运行一次。

1

它们在功能上不相同。

在第一个(工作)片段中,通过拨打slideShow()它确实是这样,然后在1秒后安排另一个呼叫。

第二个版本只有安排一个呼叫匿名函数一次。因为它们不是相同的,所以函数调用再次没有被预定