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

输入list选项时触发ReferenceError错误,请求技术排查

解决"Cannot access 'input' before initialization"错误

你的问题出在循环内部重新用let声明了input变量,触发了JavaScript的暂时性死区(TDZ)规则:

在while的代码块里,你在if判断之后写了let input = prompt(...),这会在当前块级作用域里创建一个新的input变量。块内代码会优先使用这个新变量,但if语句执行时,这个新的input还没完成初始化(要到let声明的那一行才会初始化),所以访问input就会报错。

修改后的代码:

let input = prompt("What would you like to do ?!!!!!")
const todos = []
while (input.toLowerCase() !== "quit" && input.toLowerCase() !== "q") {

    if (input === 'list') {
        console.log('++++++++++')
    }

    // 去掉let,直接赋值给外层已声明的input变量
    input = prompt("What would you like to do ?!!!!!");
}
console.log("OK!! Quit the app")

关键说明:

  • 不需要在循环里重新声明input,直接复用外层已经声明好的变量即可。
  • let声明的变量具有块级作用域,同一作用域内重复声明会引发问题,不同作用域则会覆盖外层变量并产生暂时性死区。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:05:19