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

JavaScript数组查找最小值报错:ReferenceError: lowest is not defined 原因解析

错误原因解析

核心问题:变量作用域不匹配

你在for循环的代码块内部用let声明了lowest变量,而let是块级作用域的关键字——这意味着lowest只能在循环的{}内部被访问。当循环结束后,函数执行到return lowest这一行时,当前函数作用域里根本没有名为lowest的变量,所以JS引擎抛出了ReferenceError: lowest is not defined。

附带的逻辑bug

就算你把lowest的声明移到循环外面,当前代码也没法正确找到最小值:因为每次循环都会把lowest重置为当前的element,然后执行if (element < lowest)——这相当于拿一个值和自己比较,永远不会触发赋值操作,最后返回的只会是数组最后一个元素。

修复后的代码
function findLowest(numbers) {
  // 把lowest放在函数作用域,初始化为数组第一个元素
  let lowest = numbers[0];
  // 从第二个元素开始遍历(第一个已经作为初始值了)
  for (let i = 1; i < numbers.length; i++) {
    const current = numbers[i];
    if (current < lowest) {
      lowest = current;
    }
  }
  return lowest;
}

const height = [10, 16, 25, 2];
const result = findLowest(height);
console.log(result); // 输出2

内容的提问来源于stack exchange,提问作者Imtiaz Ahmmed Asif

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:27:09