我有以下快速代码段:

var sQuantity = 0
if (sQuantity = 0 || isNaN(sQuantity)) {
  (sQuantity = parseInt(prompt("Let's begin compiling our student database. How many students would you like to enter?", "Number of Students")));
  (sQuantity = 1);
}


但是当我这样运行它时,提示根本没有出现。显然我弄错了它应该如何工作。如果未输入整数,如何提示我继续弹出?我可能正在处理所有这些错误...

最佳答案

这是一种可能的方法:

var sQuantity;
do {
  sQuantity = parseInt(prompt('Prompt message', 'Default prompt value'), 10);
} while (!sQuantity);


您的问题中显示的代码有两个错误原因。首先,您实际上并没有检查sQuantity是否等于0-您为其分配了0(使用= 0;至少应该为== 0)。确切地说,实际分配的是0 || isNaN(sQuantity)的结果。它是false-赋值时sQuantity等于0,而不是NaN

但是,更重要的是第二个缺陷:在为它分配一些值之后,就没有必要使用sQuantity检查if值了。您知道它等于0,对吧?

唯一有意义的情况是使用循环:首先为变量分配一些值(prompt的结果),然后在循环条件下检查此值。

在我的示例中,我使用了do-while循环,因为您显然必须至少向用户显示一次prompt。使用!sQuantity子句,我同时检查NaN0:这些是parseInt可能返回的唯一虚假值。

09-25 20:32