setTimeout(function() {
return function() {
console.log("setTimeout");
};
}(), 500);
function test(){
return function() {
console.log("test");
};
}
test();
上述执行结果为setTimeout。
test函数里边的console语句不执行很容易理解,返回一个函数但没有调用它,所以不执行,也就不会输出test。
不过setTimeout里边函数在500ms后执行,也是返回一个函数,怎么就执行了,谁调用的它呢?求教
setTimeout
的第一个参数是这个东西:这是一个立即执行函数,并不是
setTimeout
需要的一个函数或字符串,所以这个立即执行函数就执行了,返回了一个函数作为结果,就相当于:然后这个函数会在500ms后执行。就这样。
在函数外出放闭合的()是自调用的意思,这个你应该不知道。你把500前边的括号去掉了就不执行了。
自执行函数的一种写法吧,
额,你如果这样写,它也是不执行的
但是你是这样写的
注意,500之前的逗号前面你还加了
()
。所以你定义了函数并立即执行了它。因为你自执行了这个函数.它返回一个函数加入任务队列.
你的代码可以直接看成这样吧.