gpt4 book ai didi

javascript - 尝试使用递归添加数字时得到 NaN

转载 作者:行者123 更新时间:2023-11-28 15:12:09 27 4
gpt4 key购买 nike

我试图在没有循环的情况下添加未知数量的参数。这是我到目前为止所做的。

var add = function add() {
if (!arguments.length) {
return 0;
} else {
var args = [].slice.call(arguments, 0);

console.log(args[0], arguments);
args.splice(0, 1);
return args[0] + add.apply(this, args); //needtoreadaboutapply
}
};

这是我调用 add(3,4,5) 时得到的输出。那么我做错了什么以及如何在浏览器控制台中调试此类递归调用? 3 [3, 4, 5]
4 [4, 5]
5 [5]
NaN

最佳答案

您正在从参数中删除一个元素并访问该元素。因此,在处理最后一个参数时,该操作会导致问题。当您删除最后一个参数时,数组将[]为空,此时如果您访问arg[0],则会给出undefined未定义+数字= NaN

尝试使用删除的数字而不是从数组中访问它,

var add = function add() {
if (!arguments.length) {
return 0;
} else {
var args = [].slice.call(arguments, 0);
var spliced = args.splice(0, 1);
console.log(args[0], arguments);
return spliced[0] + add.apply(this, args); //needtoreadaboutapply
}
};

关于javascript - 尝试使用递归添加数字时得到 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35954203/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com