You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript高阶函数练习:loop、halve、square函数运行异常求修正

问题排查

你的代码存在以下问题:

  • loop 函数内部重复声明了同名变量loops,覆盖了传入的循环次数参数,且声明的内部函数从未执行,整个函数没有返回值,调用后默认返回undefined
  • 循环逻辑完全不符合需求:既没有将传入的func作用到初始数值上,也没有按要求执行对应次数,错误的分支判断会导致循环第一次执行就直接返回,逻辑完全无法跑通
  • 没有正确处理循环次数为负数的边界场景

修正后代码

function loop(loops, number, func) {
  // 处理循环次数不合法的边界情况
  if (loops <= 0) {
    console.log('Programme ended')
    return
  }
  let res = number
  // 循环执行指定次数,每次用上次的计算结果作为入参调用传入的函数
  for (let i = 0; i < loops; i++) {
    res = func(res)
  }
  return res
}

var halve = function(n) {
  return n / 2
}

var square = function(n) {
  return n ** 2;
}

console.log(halve(50));
console.log(loop(5, 200, halve));
console.log(loop(3, 5, square));
console.log(loop(-1, 99, halve));

运行结果

执行后输出内容如下,和预期效果一致:

25
6.25
390625
Programme ended
undefined

内容的提问来源于stack exchange,提问作者nsuspect

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 00:45:01