gpt4 book ai didi

javascript - 如何在 JavaScript 中编写一个函数来调用另一个函数 N 次而不使用 for 或 while 循环?

转载 作者:行者123 更新时间:2023-12-02 22:54:55 24 4
gpt4 key购买 nike

我是编码新手,我遇到了一个障碍,我似乎找不到答案...我正在尝试编写一个函数,该函数将调用另一个函数 n 次。我知道使用这种数据类型比使用数字或字符串更困难。

console.group("3 Times");
var hello = function(){
console.log("Hello World!");
}
function call3Times(func) {
func();
func();
func();
}
function nthTimes(n, func){
var hello = func;
var nthHello = console.log(hello.repeat(n));
return nthHello
}
call3Times(hello);
nthTimes(5, hello());
console.groupEnd();

因此,我不断发现重复不能在 undefined variable 上运行。我知道在这种情况下,函数不是指变量,而是指函数本身,它将被视为引用。那么我该如何解决这个问题呢?

最佳答案

正如其他人指出的:

  • for 循环是最佳选择。但是,在评论中您提到不应使用 for 循环。在这种情况下,您可以使用递归。
  • 函数没有 repeat 方法。
  • 您使用错误的第二个参数调用了 nthTimes 方法:它应该是 hello(函数对象),而不是一个 的返回值hello() 执行:所以不带括号:

    nthTimes(5, hello);

function nthTimes(n, func) {
if (n <= 0) return; // Don't call function (end recursion)
func(); // call it once, ...
nthTimes(n-1, func); // ...and n-1 times
};

var hello = function() {
console.log("Hello World!");
}

nthTimes(5, hello);

替代.repeat

由于您使用了 .repeat() 语法,因此这里有一个替代方案可以实现这一点。 repeatable 函数定义给定函数的 repeat 方法。在这个替代方案中,我还添加了对提供参数和使用 this 对象的支持:

function repeatable(func) {
// add a property to the function object; a new method for it:
func.repeat = function (n, ...args) {
if (n <= 0) return; // Don't call function (end recursion)
func.call(this, ...args); // call it once, ...
func.repeat(n-1, ...args); // ...and n-1 times
};
// The given function object is extended, but let's also return it
return func;
}

var hello = repeatable(function() {
console.log("Hello World!");
});

hello.repeat(5);

关于javascript - 如何在 JavaScript 中编写一个函数来调用另一个函数 N 次而不使用 for 或 while 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58032060/

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