带参数的函数表达式

时间:2011-05-27 11:04:31

标签: javascript

我正在玩函数表达式并尝试解决一些问题。这是我写的代码。

这有效

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);

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

由于

2 个答案:

答案 0 :(得分:2)

在第二个示例中,sum变量不返回函数指针。必须将onclick事件分配给函数指针。所以在第二个例子中,你通过传递两个参数来直接调用sum函数,因为这个函数不返回任何东西(它只是警告)它不起作用。要使它适用于您需要的第二个示例:

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

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

在第一个例子中,你通过传递两个参数来调用sum函数,但是这个调用只返回另一个函数,然后将其赋值给onclick事件。

我想你想要这个:

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

答案 1 :(得分:0)

使用局部变量是一种首选方法,因为当调用函数时,我可以更好地控制。将参数传递给函数表达式并不自然,因为它需要一些奇怪的语法。以下是我通常在Javascript中使用函数的方法。

声明一个本地范围的函数:
var enableStopBtn = function('videoBtnId') { // do something }

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