我正在學習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);
當沒有回調的情況下可以做同樣的事情爲什麼我們需要在上面的例子中使用回調。我知道我絕對錯過了一些東西。但我似乎無法理解什麼。
在你的第二個例子中,negate沒有定義。那是遺漏嗎? – wafflecat
順便說一句,回調只是正常的,匿名函數。他們沒有什麼特別的。 – ftor