JavaScript中return的作用是什么?为何有无return结果不同
JavaScript中return关键字作用及跳跃游戏代码差异原因
return关键字的核心作用
在JavaScript函数中,return的作用只有两点:
- 立即终止当前函数的全部执行流程,
return语句之后的所有代码都不会被执行 - 将
return后跟随的表达式结果,作为当前函数的返回值,传递给调用函数的位置
如果函数从头到尾没有执行到任何return语句,默认会返回undefined。
两段canJump代码的结果差异原因
两段跳跃游戏实现的逻辑差异,完全来自if分支里是否加了return:
可正常判题通过的代码
function canJump(nums){ let reachable = 0; for(let i=0; i < nums.length; i++){ if(reachable < i) return false; reachable = Math.max(reachable, i + nums[i]); } return true; }
这段代码逻辑符合预期:遍历数组时维护当前能跳到的最远下标reachable,一旦发现当前遍历到的下标i已经超过了可达范围,说明根本到不了i位置,更不可能抵达数组末尾,此时执行return false会立刻终止函数运行,直接返回错误结果。只有遍历完所有下标都没触发不可达条件,才会走到最后返回true。
无法通过判题的错误代码
function canJump(nums){ let reachable = 0; for(let i=0; i < nums.length; i++){ if(reachable < i) false; reachable = Math.max(reachable, i + nums[i]); } return true; }
这段代码里if分支只单独写了一个false字面量,属于完全无效的代码:它确实会被求值得到布尔值false,但既没有把这个值存储到变量,也没有通过return终止函数、向外传递结果。哪怕已经触发了「当前位置不可达」的失败条件,循环还是会继续执行,等整个循环跑完,不管中间有没有出现不可达的情况,都会直接执行最后一行的return true,永远返回true,结果自然不符合预期。
拿典型测试用例[3,2,1,0,4]举例:正确代码遍历到下标4时,能跳到的最远距离只有3,会立刻返回false;错误代码碰到这个场景只会空跑一行无效的false表达式,循环结束后照样返回true,判题自然无法通过。
内容的提问来源于stack exchange,提问作者22h2l
相关产品推荐
相关产品推荐

