Adl*_*ler 60 javascript settimeout
我正在尝试使用setTimeout编写一个简单的代码,并且setTimeout不会等待它所设想的时间并且代码立即执行.我究竟做错了什么?
setTimeout(testfunction(), 2000);
Run Code Online (Sandbox Code Playgroud)
Mat*_*Mat 120
您正在立即调用该函数并调度其返回值.
使用:
setTimeout(testFunction, 2000);
^
Run Code Online (Sandbox Code Playgroud)
注意:没有parens.
Jos*_*eti 21
删除括号
setTimeout(testfunction(), 2000);
Run Code Online (Sandbox Code Playgroud)
如果要将参数发送到函数,可以创建一个匿名函数,然后调用所需的函数.
setTimeout(function() {
testfunction('hello');
}, 2000);
Run Code Online (Sandbox Code Playgroud)
编辑
有人建议发送一个字符串作为setTimeout的第一个参数.我建议不要遵循这个并且永远不要将字符串作为setTimeout的第一个参数发送,因为将使用eval函数.这是不好的做法,如果可能应该避免.
删除测试函数名称后的括号:
setTimeout(testfunction, 2000);
Run Code Online (Sandbox Code Playgroud)
原因是setTimeout的第一个参数应该是函数引用,而不是函数的返回值.在您的代码中,testfunction立即调用,并将返回值发送到setTimeout.
| 归档时间: |
|
| 查看次数: |
30714 次 |
| 最近记录: |