这个奇怪的setTimeout语法是什么
What is this strange setTimeout syntax?
我遇到了如下代码(实际上有效),我很好奇语法发生了什么。
function timeout(a){
alert(a);
}
setTimeout('timeout(5)', 2000); //alerts 5 after two seconds
我看到了指向传递给setTimeout的函数以及匿名函数的指针。用带括号的引号传递函数有效吗?我在MDN上找不到任何关于它的信息。
用带括号的引号传递函数有效吗?
是的,您可以将带有任意代码的字符串传递到setTimeout
;它甚至不一定是一个函数。这不是个好主意。对代码的评估就好像它在全局范围内一样。
现代的方法是:
setTimeout(timeout.bind(null, 5), 2000);
MDN文档令人困惑。
每个人都会犯这样的错误:在函数参数中使用括号。
但即使在MDN上,语法也很清楚:
var timeoutID = scope.setTimeout(function[, delay, param1, param2, ...]);
所以,就像你的样品
window.setTimeout(timeout, 1000, 'hello');
function timeout(a){
echo a;
}
相关文章:
- setInteval vs setTimeout
- 铬:“;未捕获的语法错误:意外的标记:"
- jQuery语法添加了var
- Javascript未捕获语法错误意外的标识符错误
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 为什么忽略了eval()代码中的语法错误
- 难以访问的JS环境中的语法错误
- 如何告诉MathJax对下标使用替代语法
- Javascript语法向设置发出sessionStorage值
- 未捕获的语法错误:意外的标记{
- 使用$scope方法时的ControllerAs语法
- "未捕获的语法错误:意外的标记}"
- setTimeout可以与闭包内的函数一起使用吗
- javascript自执行函数-不同的语法
- Javascript setTimeout for an array
- 这个奇怪的setTimeout语法是什么
- setTimeout()代码中存在语法错误
- 从具有延迟的开关中断:setTimeout+Break=语法错误
- setTimeout语法错误
- 帮助了解settimeout函数语句的javascript语法