setTimeout(function() { return function() { console.log("setTimeout"); };}(), 500);function test(){ return function() { console.log("test"); };}test();上述执行结果为setTimeout。test函数里边的console语句不执行很容易理解,返回一个函数但没有调用它,所以不执行,也就不会输出test。不过setTimeout里边函数在500ms后执行,也是返回一个函数,怎么就执行了,谁调用的它呢?求教
1 回答
翻阅古今
TA贡献1780条经验 获得超5个赞
setTimeout
的第一个参数是这个东西:
function() { return function() { console.log("setTimeout"); }; }()
这是一个立即执行函数,并不是setTimeout
需要的一个函数或字符串,所以这个立即执行函数就执行了,返回了一个函数作为结果,就相当于:
setTimeout(function() { console.log("setTimeout"); }, 500);
然后这个函数会在500ms后执行。就这样。
添加回答
举报
0/150
提交
取消