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

查看:196
本文介绍了javascript - 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后执行,也是返回一个函数,怎么就执行了,谁调用的它呢?求教

解决方案

setTimeout的第一个参数是这个东西:

function() {
    return function() {
        console.log("setTimeout");
    };
}()

这是一个立即执行函数,并不是setTimeout需要的一个函数或字符串,所以这个立即执行函数就执行了,返回了一个函数作为结果,就相当于:

setTimeout(function() {
    console.log("setTimeout");
}, 500);

然后这个函数会在500ms后执行。就这样。

这篇关于javascript - js setTimeout中return 函数如何自己执行的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆