工作對高階函數雄辯的Javascript章,我就翻過這個例子:花括號周圍循環改變輸出
function reduce(array, combine, start) {
var current = start;
for (var i = 0; i < array.length; i++)
current = combine(current, array[i]);
return current;
}
console.log(reduce([1, 2, 3, 4], function(a, b) {
return a + b;
}, 0));
// → 10
其中,當for
循環重新編寫,包括我以爲是可選的,大括號,如:
function reduce(array, combine, start) {
var current = start;
for (var i = 0; i < array.length; i++) {
current = combine(current, array[i]);
return current;
}
}
console.log(reduce([1, 2, 3, 4], function(a, b) {
return a + b;
}, 0));
// → 1
結果只是1而不是預期的10。什麼是大括號在這裏做什麼來改變輸出?當你問他們的
大括號將'return current;'**在循環體內運行**,所以在第一次迭代中,您退出函數。沒有大括號,'return current;'在**循環體之後是**。 –