Javascript 将参数作为另一个函数的参数传递给函数

Javascript 将参数作为另一个函数的参数传递给函数,javascript,jquery,Javascript,Jquery,有一些类似的问题,但我仍然感到困惑。因为我的例子是function,其中params作为另一个函数的参数 简单案例: var who = 'Old IE', dowhat = 'eat', mycode = 'my code :(', text = 'I dont know why'; function whathappen(who, dowhat, mycode) { alert(who + dowhat + mycode); } function caller(text

有一些类似的问题,但我仍然感到困惑。因为我的例子是function,其中params作为另一个函数的参数

简单案例:

var who = 'Old IE',
dowhat  = 'eat',
mycode  = 'my code :(',
text    = 'I dont know why';

function whathappen(who, dowhat, mycode) {
    alert(who + dowhat + mycode);
}

function caller(text, func) {
    alert(text);
    func();
}
问题:如何做类似于调用方(text,whathappen(who,dowhat,mycode))的事情?我不确定我们是否使用了类似于调用方的匿名函数(text,function(){…}(那个匿名函数会被调用两次吗?)


谢谢

要传递要使用参数执行的函数,可以使用lambda。lambda作为参数
func
传递

示例:(这是调用
调用者
-
文本
dowhat
,和
mycode
是参数/变量。lambda仍然可以访问
dowhat
,和
mycode
,因为)

至于“那个匿名函数会被调用两次吗?”,如果我理解你的意思,不会。也许你见过这样的语法

(function () {
    ...
})();

这是一个lambda,在创建后立即调用(注意“调用”lambda末尾的括号)。在第一个示例中,您只创建并传递匿名函数(函数在Javascript中).

要传递要使用参数执行的函数,可以使用lambda。lambda作为参数
func
传递

示例:(这是调用
调用者
-
文本
dowhat
,和
mycode
是参数/变量。lambda仍然可以访问
dowhat
,和
mycode
,因为)

至于“那个匿名函数会被调用两次吗?”,如果我理解你的意思,不会。也许你见过这样的语法

(function () {
    ...
})();
这是创建后立即调用的lambda(请注意“调用”lambda末尾的括号)。在第一个示例中,您仅创建并传递匿名函数(函数采用Javascript格式)。

您可以使用创建一个函数来调用另一个具有特定值的函数:

caller(text, $.proxy(whathappen, this, who, dowhat, mycode));
您可以使用创建一个函数,该函数使用特定值调用另一个函数:

caller(text, $.proxy(whathappen, this, who, dowhat, mycode));

do
是保留字,请参见突出显示的语法?这是您的真实变量名吗?在第一个示例中,您没有传递函数,但
未定义
@elclanrs已编辑。抱歉:)。这只是一个简单的例子,那么怎么做呢?它在您的第一个使用示例中传递undefined,因为它正在执行
whathapped(who,dowhat,mycode)
,它不返回任何内容。因此,作为参数传递的是
undefined
do
是保留字,请参见语法突出显示?这是你的真实变量名吗?在第一个示例中,您没有传递一个函数,但是
未定义
@elclanrs已编辑。对不起:)。这只是一个简单的例子,那么怎么做呢?它在您的第一个使用示例中传递undefined,因为它正在执行
whathapped(who,dowhat,mycode)
,它不返回任何内容。因此,作为参数传递的是
未定义的
非常感谢@Raekye@BagusJavas别担心。我认为这是一个好问题。我记得当我第一次理解lambda、闭包和回调时——它打开了一个很棒的世界:)非常感谢@Raekye@BagusJavas别担心。我认为这是一个好问题。我记得当我第一次理解lambdas、闭包和回调时——它打开了一个很棒的世界:)@BagusJavas:这个问题是用jQuery标记的,所以我很自然地认为你在使用它。@BagusJavas:这个问题是用jQuery标记的,所以我很自然地认为你在使用它。