JavaScript高阶函数循环/递归/混淆
实现一个函数,该函数将函数作为第一个参数,将num作为第二个参数,然后执行传入的函数num次 为什么这样不行 我假设我正在启动一个名为repeat的函数。Repeat有两个参数并接受两个参数 对于循环,我创建了一个数组,其长度等于传入的num 然后启动for循环,将计数器变量I设置为0。然后我设置了一个条件,该条件表示我应该始终小于先前创建的num_数组的长度。然后使用++将计数器i递增1 对于条件为true的每一次,我们都应该返回调用运行函数操作并将num作为参数传递的值 最后两行允许通过使用预编程参数的命令行轻松运行程序JavaScript高阶函数循环/递归/混淆,javascript,for-loop,functional-programming,Javascript,For Loop,Functional Programming,实现一个函数,该函数将函数作为第一个参数,将num作为第二个参数,然后执行传入的函数num次 为什么这样不行 我假设我正在启动一个名为repeat的函数。Repeat有两个参数并接受两个参数 对于循环,我创建了一个数组,其长度等于传入的num 然后启动for循环,将计数器变量I设置为0。然后我设置了一个条件,该条件表示我应该始终小于先前创建的num_数组的长度。然后使用++将计数器i递增1 对于条件为true的每一次,我们都应该返回调用运行函数操作并将num作为参数传递的值 最后两行允许通过使用
谢谢你抽出时间 您可能需要如下内容,而不是
返回函数的结果操作(num)
您希望将值存储在数组中<循环中的code>return
会从循环中中断,因此它总是只运行一次
function repeat(operation, num) {
var num_array = new Array(num);
for(var i = 0; i < num_array.length; i++){
num_array[i] = operation(num);
}
}
//
// The next lines are from a CLI, I did not make it.
//
// Do not remove the line below
module.exports = repeat
函数重复(操作,num){
var num_array=新数组(num);
对于(var i=0;i
在循环的第一次迭代中,return
语句将中断函数。您需要删除返回
,然后像这样调用函数:
function repeat(operation, num) {
for(var i = 0; i < num; i++){
operation(num);
}
}
var op = function(arg) {console.log(arg);},
n = 5;
function repeat(operation, num) {
for(var i = 0; i < num; i++){
operation(i);
}
}
repeat(op ,n);
// The next lines are from a CLI, I did not make it.
//
// Do not remove the line below
module.exports = repeat
函数重复(操作,num){
对于(变量i=0;i
请注意,我已经删除了数组的创建和迭代,在这里您不需要它
另外,您最初的问题没有指定您需要将
num
传递给函数(但您在下面的步骤中列出了它),因此如果您询问循环为什么没有运行,您可以只执行operation()
而不是operation(num)
,这是因为您必须在定义函数后运行该函数(我假设您尚未在其他地方调用该函数)
调用函数repeat
后,您将看到它在一次迭代后退出。这是因为您正在返回操作-返回将导致函数结束。要留在循环中,只需调用operation()
,而无需返回
另外,您不需要创建数组,只需使用在for循环中定义的计数器即可
所以代码看起来像这样:
function repeat(operation, num) {
for(var i = 0; i < num; i++){
operation(num);
}
}
var op = function(arg) {console.log(arg);},
n = 5;
function repeat(operation, num) {
for(var i = 0; i < num; i++){
operation(i);
}
}
repeat(op ,n);
// The next lines are from a CLI, I did not make it.
//
// Do not remove the line below
module.exports = repeat
var op=function(arg){console.log(arg);},
n=5;
函数重复(操作,num){
对于(变量i=0;i
您不需要阵列。您是如何测试您的功能的?它是由我正在使用的CLI自动测试的<代码>实际预期----------------“调用函数1次。”“调用函数1次。”“”!=“调用函数2次。”null!=“”#失败
将实际结果和预期结果添加到您的帖子中(使用编辑
)。成功了,谢谢!这是解决问题的一个聪明办法。这几乎像是.map函数。啊,是的,这也有道理。谢谢OP特别声明参数是从其代码外部传递给函数的。