猿问

js setTimeout中return 函数如何自己执行的?

setTimeout(function() {

    return function() {

        console.log("setTimeout");

    };

}(), 500);


function test(){

    return function() {

        console.log("test");

    };

}

test();

上述执行结果为setTimeout。

test函数里边的console语句不执行很容易理解,返回一个函数但没有调用它,所以不执行,也就不会输出test。

不过setTimeout里边函数在500ms后执行,也是返回一个函数,怎么就执行了,谁调用的它呢?求教


智慧大石
浏览 2031回答 1
1回答

翻阅古今

setTimeout的第一个参数是这个东西:function() {    return function() {        console.log("setTimeout");     }; }()这是一个立即执行函数,并不是setTimeout需要的一个函数或字符串,所以这个立即执行函数就执行了,返回了一个函数作为结果,就相当于:setTimeout(function() {    console.log("setTimeout"); }, 500);然后这个函数会在500ms后执行。就这样。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答