使用函数声明作为参数

问题描述:

我试图创建一个存根定义,下面的代码可以使用通过:使用函数声明作为参数

func.calc({ 
 
    'divide': function(num1, num2) { 
 
    // do something 
 
    }, 
 
    'add': function(num1, num2, num3) { 
 
    // do something 
 
    } 
 
});

到目前为止,我已经遇到麻烦参数传递给第二个参数中的函数。这是我一直在努力做的事情:

var func = { 
 
    calc: function(operationsArray) { 
 
    if (div) { 
 
     operationsArray[0](args); /* get args */ 
 
    } 
 
    else (add) { 
 
     operationsArray[1](args); /* get args */ 
 
    } 
 
    } 
 
}

是否有可能得到整个函数定义(带参数和执行),当它被作为参数在第一个片段方式通?

+0

我不明白你要根据你提供的伪代码来做什么。 –

+0

我不知道你在这里问什么。您的示例代码太抽象,无法理解,并且无论如何都有语法错误。尝试一个真正的[mcve] – Quentin

+0

重新编辑:点击“运行代码片段”。你有基本的语法错误! – Quentin

您声明func.temp作为接受Array作为第二个参数的方法。另一方面,你用Object作为第二个参数来调用该方法。

JavaScript规范告诉我们,场顺序不保证:

4.3.3对象 一个目的是对象的类型的成员。它是一个无序的属性集合,每个属性都包含一个原始值,对象或函数。存储在对象属性中的函数称为方法。

这意味着你不应该使用位置索引来访问in_func & in_func2(即[0])。

你应该调用的函数,像这样的数组:

func.temp(mainArg, [ 
 
    function(arg1, arg2) { 
 
    // do something 
 
    }, 
 
    function(arg1, arg2, arg3) { 
 
    // do something 
 
    } 
 
]);

OR,实现该功能,以便它使用明确的名字:

var func = { 
 
    temp: function(arg1, func_obj) { 
 
    // do something with arg1 
 
    if (trigger1) { 
 
     func_obj.in_func(/* get params */); 
 
    } 
 
    else (trigger2) { 
 
     func_obj.in_func2(/* get params */); 
 
    } 
 
    } 
 
}