gpt4 book ai didi

JavaScript 递归参数

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

我对如何将我的参数传递到新的递归级别有疑问。这是我正在做的事情的简化版本:

var newFunction = function(obj) {
var result = "";
var args = [];
Array.prototype.push.apply(args, arguments);
var thisArg = args.shift()
//do stuff to add onto result with thisArg. This block works, so I'm skipping.
if (args.length !== 0) {
result += newFunction(args);
};
return result;
};

我遇到的问题与“args”如何传递到 newFunction 以循环回来有关。当进行递归回调时,args 作为单个数组参数传递到新函数作用域中:

  • 原始参数 = ("string", true, 9, "string 2")
  • 递归中的新参数 = ([true, 9, string 2])

它需要是:

  • 原始参数 = ("string", true, 9, "string 2")

  • 递归中的新参数 = (true, 9, "string 2")

我很确定这与我如何使用 .apply 来处理 args 变量有关。我只是不知道如何解决这个问题,因为你不能 .shift() 'arguments' 对象。我这样做的方法是将 args 设置为一个数组;因此,当它被传入时,它会将其作为单个数组传递。这是我的代码的问题...

你看到我做错了什么了吗?提前致谢。

最佳答案

您可以使用.apply():

result += newFunction.apply(undefined, args);

.apply() 函数类似于 .call,但它将数组元素展开,以便(有效)将数组逐个元素复制到新调用的函数中的 arguments 对象。

关于JavaScript 递归参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30514230/

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