如果不使用for或while循环,如何编写一个函数在JavaScript中第n次调用另一个函数?
我是新的编码,我遇到了一个障碍,我似乎无法找到答案。。。我正在尝试编写一个函数,它将调用另一个函数n次。我知道处理这种数据类型比处理数字或字符串更困难如果不使用for或while循环,如何编写一个函数在JavaScript中第n次调用另一个函数?,javascript,function,Javascript,Function,我是新的编码,我遇到了一个障碍,我似乎无法找到答案。。。我正在尝试编写一个函数,它将调用另一个函数n次。我知道处理这种数据类型比处理数字或字符串更困难 console.group("3 Times"); var hello = function(){ console.log("Hello World!"); } function call3Times(func) { func(); func(); func(); } function nthTimes(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();
因此,我一直认为,repeat不能在未定义的变量上运行。我知道,在这种情况下,函数不是引用变量,而是引用它将作为引用的函数本身。那么我该如何解决这个问题呢?首先,欢迎来到这个网站,欢迎来到编程 你会想看看一个叫a的东西。它们是编程中的实用程序,允许您重复一行或几行代码,直到满足特定条件 例如,在您的场景中,您可以编写
function nthTimes(n, func){
for (var i = 0; i < n; i++) {
func();
}
}
我有一个不断重写的函数,名为
times
(基于旧函数)。听起来它能满足你的要求
function toPosInt(number) {
return Math.floor(Math.abs(number));
}
function times(number, handler, context) {
let posInt = toPosInt(number) || 0;
let i = 0;
while (i < posInt) {
handler.call(context, i);
i += 1;
}
return posInt;
}
var hello=function(){
log(“你好,世界!”);
}
函数n次(n,func){
for(设i=0;i
解释
n次(5,hello())代码>这样做实际上是执行hello函数,并将hello函数返回的值传递给第n次。相反,尝试此n次(5,hello)
通过这种方式,您只需传递对hello函数的引用,稍后可以使用func()
调用该函数。有许多方法可以成功地重现您希望达到的效果
我的答覆如下:
- 使用
ES2015+
语法编写(“新”版本的javascript);及
- 使用
回调
(这是对作为参数传递给另一个函数的函数的引用(即,第二个函数能够访问第一个函数)
//我想稍后调用的函数
常量logHelloWorld=()=>{
log('helloworld!');
}
//我的主要职能
const runFunctionRepeatedly=(回调,numberOfTimes)=>{
for(设i=0;i
根据以下内容:
repeat()方法构造并返回一个新字符串,该字符串包含调用它的字符串的指定数量的副本,并连接在一起
这意味着它与String
对象一起使用,它将获取一个字符串并重复n
次,将结果存储为String
下面是使用.repeat()函数的示例:
var hello = "Hello World";
var repeated = hello.repeat(5);
console.log(repeated);
//expected output: > "Hello WorldHello WorldHello WorldHello WorldHello World"
请注意,每个重复的hello
之间没有空格-这是因为hello
的末尾没有空格,并且它完全重复
要多次重复函数,可以使用For循环:
function nthTimes(n, func) {
for (var i = 0; i < n; i++) {
func();
}
}
function hello() {
console.log("Hello World");
}
nthTimes(5, hello);
//expected output: > "Hello World" > "Hello World" > "Hello World" > "Hello World" > "Hello World"
函数n次(n,func){
对于(变量i=0;i“Hello World”>“Hello World”>“Hello World”>“Hello World”>“Hello World”
正如其他人所指出的:
for
循环是一个不错的选择。但是,在评论中您提到不应该使用for
循环。在这种情况下,您可以使用递归
- 函数没有
repeat
方法
- 您使用错误的第二个参数调用了第n次
hello
方法:它应该是hello
(函数对象),而不是一个hello()
执行的返回值:因此,没有括号:
nthTimes(5, hello);
函数n次(n,func){
如果(n/@Dayman3030)这就是你想要实现的目标吗
console.group("3 Times");
var hello = function(){
return "Hello World! ";
}
function call3Times(n=3, func) {
for (var i = 0; i < n; i++) {
console.log(func());
}
}
function nthTimes(n=3, func){
var hello = func();
var nthHello = hello.repeat(n);
return console.log(nthHello);
}
call3Times(5, hello);
nthTimes(5, hello);
console.groupEnd();
console.group(“3次”);
var hello=function(){
返回“你好,世界!”;
}
函数调用3次(n=3,func){
对于(变量i=0;i
nthTimes(5,hello());
这样做实际上是执行hello
函数,并将hello函数返回的值传递给nthTimes
。相反,请尝试此nthTimes(5,hello);
这样,您只传递了对hello函数的引用,以后可以使用func()调用该函数在提交代码之前,请考虑测试代码,特别是如果你不打算提供任何上下文!):正如@ TylerRoper所说,你应该包括对代码的一些解释,而不仅仅是代码本身。另外,因为你使用了<代码> NthTimes(5,Heloor())。;
您将传递hello
函数的结果,而不是对该函数的引用。@Tyerroper我在上面的注释中提供了解释,但忘了在这里传递。我错过了最后一部分,您可以编辑它。@MickelsonMichael我对问题做了注释,只是忘了在这里添加它。关于错误,ye啊,我从问题中复制时忘了删除它。很抱歉,我编辑了它。@没有别人的明确许可,无量纲地编辑别人的代码几乎从来都不是一个好主意,不管你在更改什么。如果你编辑你的答案以包含上面的评论,我将删除我的反对票。我知道你在说什么,这会让我感到惊讶完全有意义,但除非特别要求,否则作业要求无for或while循环。哦,您的问题中没有提到这一点。请更新您的问题(单击其下方的编辑链接),并添加此信息和任何其他约束。我已更新了我的问题,因此它不会对
循环使用。感谢并抱歉造成混淆。我现在将编辑该问题
nthTimes(5, hello);
console.group("3 Times");
var hello = function(){
return "Hello World! ";
}
function call3Times(n=3, func) {
for (var i = 0; i < n; i++) {
console.log(func());
}
}
function nthTimes(n=3, func){
var hello = func();
var nthHello = hello.repeat(n);
return console.log(nthHello);
}
call3Times(5, hello);
nthTimes(5, hello);
console.groupEnd();