Я изучаю JS и пытался понять обратные вызовы. Я наткнулся на ссылку: How to explain callbacks in plain english? How are they different from calling one function from another function? В принятом ответе решение с использованием обратных вызовов выглядит следующим образом:Обратный вызов отличается от вызова одной функции от другой (JS)?
function processArray(arr, callback) {
var resultArr = new Array();
for(var i = arr.length-1; i >= 0; i--)
resultArr[i] = callback(arr[i]);
return resultArr;
}
var arr = [1, 2, 3, 4];
var arrReturned = processArray(arr, function(arg) {return arg * -1;});
alert(arrReturned);
Однако, когда я попытался сделать то же самое без использования обратных вызовов следующим образом, я получил тот же ответ, как описано выше.
function processArray2(arr) {
var resultArr = new Array();
for(var i = arr.length-1; i >= 0; i--)
resultArr[i] = negate(arr[i]);
return resultArr;
}
function negate(n) {
return n*-1;
}
var arr = [1, 2, 3, 4];
var arrReturned2 = processArray2(arr);
alert(arrReturned2);
Если то же самое можно сделать без обратных вызовов, почему мы должны использовать обратный вызов в приведенном выше примере. Я знаю, что я определенно чего-то не хватает. Но я не могу понять, что.
В вашем втором примере отрицание не определено. Это упущение? – wafflecat
Btw, обратные вызовы - это обычные, анонимные функции. В них нет ничего особенного. – ftor