Я работаю над учебником, объясняющим функциональное программирование. Он попросил меня прийти с решением, и это сработало, но его решение использует метод функции .bind.Функциональное программирование: В чем разница между использованием замыкания и использованием метода привязки?
Есть ли разница между нашими решениями, отличными от синтаксиса?
function mapForEach(arr, fn) {
var newArr = [];
for(var i = 0; i < arr.length; i++){
newArr.push(fn(arr[i]));
}
return newArr;
}
var arr1 = [1,2,3,4,5];
var checkPassedLimitWithBind = function(limiter){
return function (limiter, item) {
return item >= limiter;
}.bind(this, limiter);
};
var checkPassedLimitWithClosure = function(limiter){
return function (item) {
return item >= limiter;
};
};
var notPassed3 = mapForEach(arr1, checkPassedLimitWithBind(3));
var doesNotPass3 = mapForEach(arr1, checkPassedLimitWithClosure(3));
alert(notPassed3);
alert(doesNotPass3);
примеров можно найти здесь, а также: https://jsfiddle.net/podbarron/73m86cj3/
'.bind()' не имеет ничего общего с функциональным программированием (хотя функциональное программирование позволяет реализовать '.bind()' самостоятельно, не требуя изменений в языке). '.bind()' относится к объектно-ориентированному программированию, замыкания связаны с функциональным программированием. Они делают две совершенно не связанные вещи. – slebetman
Спасибо за это. – pk36