Javascript 函数参数评估

标签 javascript function

我有一个自定义函数,我们将其称为 func

function func(someArg) {
    return Math.random() + someArg;
}

我有一个 Thing 对象数组,这些对象都具有某种功能 exec

var Thing = function() {
    this.exec = function(n) {
        console.log(n);   
    }
}

var arr = [new Thing(), new Thing(), new Thing()];

现在,我希望能够对数组中的所有元素执行一个函数,并且应该为每个函数执行评估该函数的参数。一个例子:

function execAll(arg) {
    arr.forEach(function(e) { e.exec(arg); });
}

execAll(func(10));

这会返回相同值的 3 倍,因为 func() 会在调用 execAll 时计算一次,然后在每个 e.exec(arg )。如何实现每次调用 e.exec 时都会评估 func

更新

如果有一个解决方案支持同时使用这两种方法,那就太好了:

execAll(someFunc()); // invoked with a function
execAll(20); // invoked with a plain value

整个片段在这里:

var Thing = function() {
    this.exec = function(n) {
        console.log(n);   
    }
}

var arr = [new Thing(), new Thing(), new Thing()];

var func = function(someArg) {
    return Math.random() + someArg;
}

function execAll(arg) {
    arr.forEach(function(e) { e.exec(arg); });
}

execAll(func(10));

最佳答案

替换这个:

function execAll(arg) {
    arr.forEach(function(e) { e.exec(arg); });
}

execAll(function (){func(10)});

这样:

    function execAll(arg) {
      arr.forEach(function(e) { e.exec(typeof arg==='function'?arg():arg); });
    }

  execAll( 10);

您应该发送一个函数以便将来每次迭代调用。

您实际上所做的是立即调用它。

关于Javascript 函数参数评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26944624/

相关文章:

javascript - 使用 JavaScript 更改描述的 HTML 链接

javascript - JSCallback 服务器关闭 : Stopping callbacks

Javascript - 定义属性与原型(prototype)

javascript - 查找回文逻辑中的边缘情况

javascript - Google Analytics : _gaq. 从另一个数组推送多个项目

c - 关于类型,c 中的 `int (*)(int)` 是什么意思?

javascript - 我需要验证我的日历,以便它只接受当前或 future 的日期?

c++ - 绑定(bind)成员函数的地址

javascript - parsley.js 如何使用自定义错误消息在字段上触发错误

javascript - 我需要使用按钮将 var 信息传递给函数