Luc*_*cia 132 javascript
是否可以传递带参数的javascript函数作为参数?
例:
$(edit_link).click( changeViewMode( myvar ) );
Run Code Online (Sandbox Code Playgroud)
Fer*_*yer 226
使用"闭包":
$(edit_link).click(function(){ return changeViewMode(myvar); });
Run Code Online (Sandbox Code Playgroud)
这将创建一个匿名临时函数包装器,它知道参数并将其传递给实际的回调实现.
Mic*_*ski 35
使用Function.prototype.bind().引用MDN:
该
bind()方法创建一个新函数,在调用时,将其this关键字设置为提供的值,并在调用新函数时提供任何前面提供的给定参数序列.
它受到所有主流浏览器的支持,包括IE9 +.
您的代码应如下所示:
$(edit_link).click(changeViewMode.bind(null, myvar));
Run Code Online (Sandbox Code Playgroud)
旁注:我假设你处于全局环境中,即this变量是window; 否则使用this而不是null.
Cly*_*yde 15
不,但你可以传递一个没有参数,并执行此操作:
$(edit_link).click(
function() { changeViewMode(myvar); }
);
Run Code Online (Sandbox Code Playgroud)
所以你传递一个没有参数的匿名函数,然后该函数用闭包中的变量调用参数化函数
Chr*_*ram 10
或者,如果您使用的是 es6,您应该能够使用箭头函数
$(edit_link).click(() => changeViewMode(myvar));
Run Code Online (Sandbox Code Playgroud)
是的,像这样:
$(edit_link).click(function() { changeViewMode(myvar) });
Run Code Online (Sandbox Code Playgroud)