JS中do块内let声明的变量在while判断时报未定义错误如何解决
报错原因
let声明的变量具有块级作用域,仅在声明所在的{}代码块内部可访问。你把Mistake变量声明在了do{ }的代码块内部,while(判断条件)的位置处于该代码块外部,自然无法访问到块内声明的Mistake变量,就会抛出未定义错误。
修复方案
只需要把Mistake变量的声明移到do-while循环的外层,和循环同级的作用域即可,修改后的代码如下:
function CheckError() { let Mistake = false; // 移到do块外声明 do { Mistake = false; // 每次循环开始重置为false let Number = prompt("Choose a number between 1 - 4"); Number = parseInt(Number); if(Number < 1 || Number > 4) { Mistake = true; } }while(Mistake == true); } CheckError();
内容的提问来源于stack exchange,提问作者javi-ur96
相关产品推荐
相关产品推荐

