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

