tee*_*yay 12 javascript settimeout
使用时setTimeout,必须将要执行的代码放入字符串中:
setTimeout('alert("foobar!");', 1000);
Run Code Online (Sandbox Code Playgroud)
但是,我想执行一个函数,我在变量中有一个引用.我希望能够这样做:
var myGreatFunction = function() { alert("foobar!"); };
// ...
setTimeout('myGreatFunction();', 1000);
Run Code Online (Sandbox Code Playgroud)
(虽然在现实生活中,警报是一段较长的代码,并myGreatFunction作为参数传递给其他函数,在其中setTimeout调用它.)
当然,当超时触发时,myGreatFunction不是已识别的功能,因此它不会执行.
我希望javascript让我这样做,但它没有:
setTimeout(function() { myGreatFunction(); }, 1000);
Run Code Online (Sandbox Code Playgroud)
这周围有一个很好的方式吗?
Ste*_*son 29
如果您不需要myGreatFunction使用任何参数调用,您应该能够传递setTimeout函数引用:
setTimeout(myGreatFunction, 1000);
Run Code Online (Sandbox Code Playgroud)
此外,您应该始终避免传递setTimeout它需要评估的代码(当您将代码包装在引号中时会发生这种情况).相反,将代码包装在匿名函数中:
setTimeout(function() {
// Code here...
}, 1000);
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅Mozilla开发中心的setTimeout页面.
史蒂夫
Kir*_*tan 14
谁说它不让你这么做?
它确实,代码 -
setTimeout(function() { myFunction(); }, 1000);
Run Code Online (Sandbox Code Playgroud)
完全有效.
| 归档时间: |
|
| 查看次数: |
9889 次 |
| 最近记录: |