javascript - 返回函数 var 的函数

标签 javascript

我可以有这样的东西,其中函数返回一个 var 本身就是一个对 DOM 元素执行操作的函数吗?

var foo = function() {

    var blah = function() {
        document.getElementById('box').style.color="red";
    };

    return blah;

};

setTimeout(function() {

    foo();

}, 2000);



<div id="box">This is some div</div>

编辑:

感谢您的所有提示,它确实按照您指出的那样工作。 一点后续... 我可以对返回的对象执行类似的操作吗?

var foo = function() {

    var blah = function() {
        document.getElementById('box').style.color="red";
    };

    var flop = function() {
        document.getElementById('box').style.color="green";
    };

    return {
        blah: blah,
        flop: flop
    };

};


var newInstance = foo();

setTimeout(function() {

    newInstance.blah;

}, 2000);

setTimeout(function() {

    newInstance.flop;

}, 4000);



<div id="box">This is some div</div>

最佳答案

是的,你可以做到。你的例子很接近。你想做的是:

setTimeout(function() {

    var result = foo();
    result();

}, 2000);

或更简洁地说:

setTimeout(function() {

    foo()();

}, 2000);

内部 foo() 调用返回该函数,现在您需要通过将另一对括号粘贴到该结果上来调用该函数。

更新

此外,由于 setTimeout() 无论如何都需要一个函数作为第一个参数,因此您可以这样做:

setTimeout(foo(), 2000);

这样,您就可以调用返回函数的foo(),并将该函数直接传递给setTimeout()。你的脑子还晕吗? =)

关于javascript - 返回函数 var 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20915061/

相关文章:

javascript - Mojolicious、Javascript 的布局和定位

javascript atob 给出特殊字符串的错误

javascript - 如何在 Angular js中获取寻呼机点击事件?

javascript - 使用逗号还是分号?

javascript - jquery 模式弹出窗口中的按键

javascript - 应用js功能后无法点击

javascript - 如何在指令中以 Angular 方式使用 jQuery?

javascript - 如何在特定数据标签上隐藏 Chart.js 中的工具提示?

javascript - javascript新功能中是否有语法,我可以将对象值提取到具有相同键和值的新对象中?

javascript - 另一个 javascript 函数作用域问题