是否可以传递带有参数的javascript函数作为参数?
例子:
$(edit_link).click( changeViewMode( myvar ) );
是否可以传递带有参数的javascript函数作为参数?
例子:
$(edit_link).click( changeViewMode( myvar ) );
使用“闭包”:
$(edit_link).click(function(){ return changeViewMode(myvar); });
这将创建一个匿名临时函数包装器,它知道参数并将其传递给实际的回调实现。
使用Function.prototype.bind()
. 引用 MDN:
该
bind()
方法创建一个新函数,该函数在调用时将其this
关键字设置为提供的值,并在调用新函数时在任何提供的参数之前提供给定的参数序列。
所有主流浏览器都支持它,包括 IE9+。
您的代码应如下所示:
$(edit_link).click(changeViewMode.bind(null, myvar));
旁注:我假设您处于全局环境中,即this
变量是window
;否则使用this
代替null
。
不,但是您可以不带参数地传递一个,然后执行以下操作:
$(edit_link).click(
function() { changeViewMode(myvar); }
);
所以你传递了一个没有参数的匿名函数,然后该函数使用闭包中的变量调用你的参数化函数
或者,如果您使用的是 es6,您应该能够使用箭头函数
$(edit_link).click(() => changeViewMode(myvar));
是的,像这样:
$(edit_link).click(function() { changeViewMode(myvar) });