首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JavaScript中调用/触发匿名函数的正确方式?

在JavaScript中调用/触发匿名函数的正确方式?
EN

Stack Overflow用户
提问于 2016-01-28 12:07:49
回答 1查看 359关注 0票数 0

假设我有这个函数,它就像一个不同版本的Array.push,并利用它中的一些不同的逻辑:

代码语言:javascript
复制
var array_values = [];

function pump_array(needle, haystack, callback) {
    var pushed = false;

    if(haystack.indexOf(needle) === -1) {
        haystack.push(needle);
        pushed = true;
    }

    if(typeof callback == 'function') {
        callback(haystack, pushed);
    }
}

现在,如果我以这种方式使用它:

代码语言:javascript
复制
var pump_array_callback = function(new_data_in_array_values, pushed) {
    if(pushed) {
        console.log('added "first" into "array_values[]"');
    } else {
        console.log('"first" already in "array_values[]"');
    }

    console.log(new_data_in_array_values);
};

pump_array('first', array_values, pump_array_callback);
pump_array('first', array_values, pump_array_callback);

pump_array的第一个函数调用将输出:

added "first" into "array_values[]"

而第二种情况则恰恰相反:

"first" already in "array_values[]"

所以,基本上,我的问题是:

这是在函数中调用/执行匿名函数的正确方式吗?

代码语言:javascript
复制
if(typeof callback == 'function') {
    callback(haystack, pushed);
}

还有其他更务实的方法来做同样的事情吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-28 12:35:25

调用回调是可以的。

还有其他更务实的方法来做同样的事情吗?

对于这个用例,您不应该使用回调。只要在可能的时候使用返回值(而且您几乎不需要回调)。

代码语言:javascript
复制
function pump_array(needle, haystack) {
    if (haystack.indexOf(needle) === -1) {
        haystack.push(needle);
        return true;
    }
    return false;
}

var array_values = [];
function pump_array_result(pushed) {
    if (pushed) {
        console.log('added "first" into "array_values[]"');
    } else {
        console.log('"first" already in "array_values[]"');
    }
    console.log(array_values);
};

pump_array_result(pump_array('first', array_values));
pump_array_result(pump_array('first', array_values));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35061091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档