【发布时间】:2015-04-21 01:52:10
【问题描述】:
什么是传递带参数的 Javascript 函数而不执行它的最有效/最佳实践,为什么?这是我知道的选择:
创建一个匿名方法
jQuery("#target").click(function() {
onTargetClick("myCoolParam");
});
function onTargetClick(coolParam) {
// some epic code...
}
使用偏函数应用 (见:Partial function application)
jQuery("#target").click(partial(onTargetClick, "myCoolParam"));
function onTargetClick(coolParam) {
// some epic code...
}
function partial(func /*, 0..n args */) {
var args = Array.prototype.slice.call(arguments).splice(1);
return function() {
var allArguments = args.concat(Array.prototype.slice.call(arguments));
return func.apply(this, allArguments);
};
}
编辑偏函数
function partial(func /*, 0..n args */) {
var args = Array.prototype.slice.call(arguments, 1);
return function() {
var allArguments = args.concat(Array.prototype.slice.call(arguments));
return func.apply(this, allArguments);
};
}
感谢您的帮助。
【问题讨论】:
-
使用
.bind(),或者闭包 -
“最佳”问题与 Stack Overflow 无关,它们邀请基于意见的答案。可能有一种客观的方式来问这个问题,但是......
-
肯定有客观的方式来回答这个问题。所有这样做的方法都有优点和缺点,其中许多是可衡量的,例如代码长度和执行时间。
-
@SamuelEdwinWard: :-) 许多基于意见的问题可以客观地回答。许多不是。 :-)
-
@T.J.Crowder 谢谢你的精确。我修复了帖子和我自己的代码:-)
标签: javascript anonymous-function partial-application