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
相关产品推荐
相关产品推荐

