Почему эта функция возвращает undefined
?Почему эта рекурсивная функция javascript не возвращает правильное значение
Внутренняя функция возвращает правильное значение.
function arraySum(i) {
// i will be an array, containing integers, strings and/or arrays like itself.
// Sum all the integers you find, anywhere in the nest of arrays.
(function (s, y) {
if (!y || y.length < 1) {
//console.log(s);
// s is the correct value
return s;
} else {
arguments.callee(s + y[0], y.slice(1));
}
})(0, i);
}
var x = [1, 2, 3, 4, 5];
arraySum(x);
Вы не возвращают 'arguments.callee (...)'. –
ОК, поэтому я переписал его с названной функцией, и теперь он работает. 'function arraySum (i) { Функция acc (s, y) { if (! y || y.length <1) { //console.log(s); // s - правильное значение return s; } else { return acc (s + y [0], y.slice (1)); } return acc (0, i); } var x = [1, 2, 3, 4, 5]; console.log (arraySum (x)); ' – hiester
Я рекомендую не использовать' arguments.callee' или 'arguments.caller'; он будет удален в ECMAScript 6 и уже недоступен в строгом режиме ECMAScript 5. –