限制器1和限制器2之间有什么区别吗?
var limiter1 = function(limiter){
return function(item){
return item > limiter;
};
};
var limiter2 = function(limiter){
return function(limiter,item){
return item > limiter;
}.bind(this,limiter);
};
答案 0 :(得分:1)
在大多数情况下,它们的功能相同。然而...
如果您开始实际使用this
的值,limiter1
返回的函数将被解除绑定(因此,消费者可以通过调用Function.prototype.bind
来更改该值)。在limiter2
中,它被初始bind
调用锁定。
此外,他们使用不同级别的范围来获取limiter
变量。根据引擎的不同,您可能会有(微小)性能差异。
答案 1 :(得分:0)
.bind算法比用另一个函数包装函数要复杂得多。但是,大部分时间都没关系。我认为使用native .bind通常会提供更易读和可维护的代码 - 这是一个很大的优势。