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

Uncaught ReferenceError报错求助:temperature未定义问题解决

问题解决:ReferenceError: temperature is not defined

这个错误的核心原因是变量作用域问题:你在currentTemperature函数里用let声明的temperature是局部变量,作用域仅限该函数内部,cityOptions函数无法访问到这个变量,因此抛出未定义的错误。

解决方案

让currentTemperature函数返回用户输入的温度值,而非仅返回布尔判断结果,这样调用它的cityOptions就能获取到温度数据并使用。

修改后的完整代码

function updateHeading(newHeading) {
  let heading = document.querySelector("h1");
  heading.innerHTML = newHeading;
}

// 修改函数,返回用户输入的温度(转为数字类型更严谨)
function currentTemperature() {
  let tempInput = prompt("What temperature is it?");
  // 处理用户取消输入的情况,同时将输入转为数字
  return tempInput ? Number(tempInput) : null;
}

function cityOptions() {
  let city = prompt("What city do you live in?");
  // 先获取温度值,再进行后续逻辑
  let temperature = currentTemperature();
  
  // 处理用户取消温度输入的场景
  if (temperature === null) {
    updateHeading(`Temperature input cancelled for ${city}`);
    return;
  }
  
  // 保留你原有的分支结构,可根据需求修改不同分支的内容
  if (temperature >= 0) {
    updateHeading(`Currently ${temperature}° in ${city}`);
  } else {
    updateHeading(`Currently ${temperature}° in ${city}`);
  }
}

let changeCityButton = document.querySelector("button");
changeCityButton.addEventListener("click", cityOptions);

关键修改说明

  • 调整currentTemperature的返回值:不再仅返回temperature >= 0的布尔结果,而是返回用户输入的温度(转为数字),同时处理用户取消输入的情况
  • 在cityOptions中先调用currentTemperature获取温度值,存储到自己的局部变量中,后续即可正常使用
  • 增加了异常场景处理,避免用户取消输入后出现异常内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:57:16