为什么这个setInterval没有工作?

Moh*_*mad 0 javascript setinterval

代码:

setInterval("doSomething()", 2000);
function doSomething(){alert('hi')}
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/PRff7/

我一直在读这个,我只是无法得到这个例子:(

gil*_*ly3 8

由于jsfiddle,您的代码没有执行.它将您的代码包装在onload处理程序中,从而避开doSomething全局命名空间.因此,当setTimeout尝试执行您的代码时,它无法找到doSomething.改变jsfiddle执行"no wrap",一切都很好:http: //jsfiddle.net/gilly3/PRff7/3/

如果你没有将你的调用包装doSomething在一个字符串中,它也会起作用,因为setInterval得到一个直接引用doSomething在同一范围内.它不需要全局引用.

  • @Mohammad - 确实是SLaks是对的.这个非jQuery代码会有同样的问题:`window.onload = function(){function doSomething(){...} setInterval("doSomething()",1000); };` (2认同)