对setTimeout中的第一个参数感到困惑
Confused about first argument in setTimeout
我很难理解setTimeout
的第一个参数以及延迟参数如何影响它。
我理解setTimeout
的方式是:
setTimeout(foo, don't even think about foo until x miliseconds has passed)
但如果我们考虑这个代码:
<div id="mine"></div>
<script type="text/javascript">
function go(){
var myDiv = document.getElementById("mine");
myDiv.innerHTML = "Hello World";
}
setTimeout(go(), 2000)
</script>
go
在不等待2秒的情况下立即运行。
正如我之前的许多人所指出的,setTimeout(go(), 2000)
是在我实际想要setTimeout(go, 2000)
时要求返回值。
坦率地说,我不明白除了"一个有效,一个无效"之外的区别。为什么前者不尊重延迟的论点?
JavaScript中的函数是一个对象。go
是函数对象,go()
执行go
函数并返回其值。setTimeout
期望一个函数,因此是go
,而不是go()
。
function go(){
return 'hello';
}
console.log(go); //=> function go(){}, a function object
console.log(go()); //=> 'hello', a string returned by the function `go`
var go = function () {
console.log('GO GO GO!');
};
setTimeout(go, 2000);
相关文章:
- 而循环只设置php中输入字段中的第一个值
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- IE11中的第二个调用取消了第一个Fetch API调用
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- 将OnClick函数设置为<ul>,最后一个ul是擦除第一个ul-s
- RxJS油门行为;立即获取第一个值
- Angular UI网格:如何通过第一个UI网格中的按钮使第二个UI网格可见
- 选择多个实例中的第一个
- 如何在调用下一个请求之前完成第一个Ajax Get请求
- 用javascript将参数从一个函数传递到另一个函数
- Lodash:返回对象的第一个键,该对象的值(即数组)中有一个给定的元素(即字符串)
- 看起来第一个console.log是'It’不太对
- 与杜兰达尔合作的第一个JavaScript项目.尝试从第三方 API 获取数据
- 节点发布错误对象的第一个“属性”
- 如果在第一个 jsp 页面设置了刷新参数,则会刷新所有 jsp 页面
- 使用 Function.prototype.bind.apply(Obj, args) 将参数传递给对象,只传递第一个元
- 提取第一个url参数,然后将其放入脚本标记中
- 第一个next()调用的参数所在的位置
- 逗号操作符返回参数列表中的第一个值,而不是第二个值