带参数的函数表达式
Function expression with Arguments
我一直在玩函数表达式,并试图了解一些东西。这是我写的代码。
这适用于
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');
相关文章:
- 调用正则表达式匹配的函数
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 参数更改时,角度表达式中的函数不更新
- ES6是否引入了一种机制来生成块范围的函数语句(而不是表达式)
- 是否有任何Javascript函数从指定的索引中进行正则表达式匹配
- 能够在定义函数表达式之前使用它
- 函数表达式,返回回调函数
- JavaScript中的立即调用函数表达式(IIFE)-传递jQuery
- 函数声明与函数表达式之间的性能差异
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- 立即调用函数表达式(IIFE)相对于普通函数的优势
- 如何通过jsp表达式标记将java字符串变量传递给javascript函数
- 用正则表达式在js中进行函数修剪
- 错误-应为赋值或函数调用,但实际看到的却是表达式
- Javascript错误正则表达式不是函数
- “期望赋值或函数调用,而是看到了表达式.” - 不必要的控制台.log
- 为过滤器创建javascript正则表达式函数
- 如何修复这个正则表达式函数
- 传递变量来替换正则表达式函数
- 正则表达式函数4个字母和4个数字