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

原型函数中every方法异常求助:ableToMoveAll返回错误结果

解决自定义数组原型方法中every返回undefined导致的错误

你遇到的问题核心很清晰——在ableToMoveAll方法的every回调函数里缺少了返回语句,导致回调每次执行完默认返回undefined,而every会把undefined当作false处理,所以无论实际情况如何,整个方法都会返回false。

修复代码

只需要在回调函数里返回el.ableToMove(dist)的结果即可:

Array.prototype.ableToMoveAll = function(dist){
 return this.every(function(el){
  return el.ableToMove(dist); // 添加return返回判断结果
 });
}

或者用更简洁的箭头函数写法,可读性更强:

Array.prototype.ableToMoveAll = function(dist){
 return this.every(el => el.ableToMove(dist));
}

原因解释

Array.prototype.every的工作逻辑是:遍历数组中的每个元素,执行你传入的回调函数。只有当**所有回调都返回true**时,every才会返回true;只要有一个回调返回false(或者被视为false的值,比如undefined、null、0等),every就会立即返回false。

你之前的回调函数没有写return,函数执行完默认返回undefined,这个值在布尔判断里会被转换成false,自然导致ableToMoveAll永远返回false。

测试验证

现在你可以用以下代码验证修复效果:

console.log(SQUADS.ableToMoveAll(30)); // 所有小队当前能量都≥30,返回true
console.log(SQUADS.ableToMoveAll(60)); // 士兵和机器小队能量只有50,返回false

这样就能得到符合预期的结果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:04:15