开发节食计算器时JS变量st3返回0的问题求助
问题原因与解决方案
核心问题是变量遮蔽:你在第二步的所有函数中重新用let声明了st2,这会创建一个仅在当前函数内有效的局部变量,而非修改全局的st2。全局st2始终保持初始值0,导致第三步计算st3时调用的是这个未更新的全局变量,最终得到0。
修复方法:
- 移除第二步所有函数中的
let关键字,直接对全局st2赋值:
例如将let st2 = parseInt(st1) + 4;改为st2 = parseInt(st1) + 4; - 同理,第三步的函数中也不需要重新声明
let st3,直接修改全局变量即可(若需保留全局st3)。
修正后的第二步函数示例:
function seventeen() { st2 = parseInt(st1) + 4; // 去掉let,直接修改全局st2 document.getElementById("step2").innerHTML = "Complete"; console.log(st2) }
修正后的第三步函数示例:
function under5() { st3 = st2 + 0; // 去掉let document.getElementById("step3").innerHTML = "Complete"; console.log(st3); }
修改后,全局st2会被正确赋值,第三步计算st3时就能得到预期的10-15左右的数值。
内容的提问来源于stack exchange,提问作者David Kolenda
相关产品推荐
相关产品推荐

