带参数的函数表达式

Function expression with Arguments

本文关键字:表达式 函数 参数      更新时间:2023-09-26

我一直在玩函数表达式,并试图了解一些东西。这是我写的代码。

这适用于

var sum=function(arg1,arg2){
    return(function(){alert(arg1*arg2)})
}
document.getElementById('button_1').onclick=sum(3,2);

这不是,我知道它甚至看起来都不对。但我只是想弄清楚这里显示的错误背后的原因。它首先显示带有6的警告框,然后显示错误消息"未执行",这是在IE6中。

var sum=function(arg1,arg2){
    alert(arg1*arg2);
}
document.getElementById('button_1').onclick=sum(3,2);

如果你们认为这个问题不需要答案,请告诉我,我会删除它。

感谢

在第二个例子中,sum变量不返回函数指针。onclick事件必须分配给函数指针。因此,在第二个示例中,您通过向sum函数传递两个参数来直接调用sum函数,因为该函数不返回任何内容(它只是发出警报),所以它不起作用。要使其与您需要的第二个示例一起工作:

document.getElementById('button_1').onclick = sum;

但是,一旦单击按钮,它将向表示事件的sum函数传递一个参数。

在第一个示例中,您通过向sum函数传递两个参数来调用它,但此调用只是返回另一个函数,然后将该函数分配给onclick事件。

我想你想要这个:

document.getElementById('button_1').onclick = function() { sum(3,2); };

使用局部变量是一种首选方式,因为当调用函数时,我对有更多的控制权。将参数传递给函数表达式感觉不自然,因为它需要一些奇怪的语法。以下是我在Javascript中使用函数的一般方法

声明本地作用域函数:
var enableStopBtn = function('videoBtnId') { // do something }

调用变量:enableStopBtn('myVideob');