while循环 - 两个条件:返回空字符串""或来自提示的null

时间:2016-04-30 16:58:02

标签: javascript while-loop

我正在尝试创建一个while循环,当来自prompt = null或空字符串的返回值时停止" &#34 ;.

var inputName = prompt("Enter a name", "");
var namesArray = [];

while (inputName != "" || inputName != null) {
  inputName;
  namesArray[namesArray.length] = inputName;
}

namesArray.sort();

var namesList = namesArray.join("<br/>");

document.write(namesList);   

2 个答案:

答案 0 :(得分:1)

您的while循环可能使用了错误的运算符(它应该使用&&来确保满足两个条件)并且还有其他问题,因为您永远不会更改inputName内的值{}循环,所以如果你输入while()循环,你将永远循环。

我建议您更改if语句以测试falsey值,这会自动捕获您关注的条件。这是一个通常更清洁的实现:

var namesArray = [], inputName;
while(true) {
    inputName = prompt("Enter a name", "");
    if (!inputName) {
        break;
    }
    namesArray.push(inputName);
}
namesArray.sort();
document.write(namesArray.join("<br/>"));

结构if (!inputName)将测试inputName的任何虚假值,其中包括nullundefined""NaN,{{ 1}}。由于您对falsenull特别感兴趣,因此这将更简单地涵盖这些内容。有关falsey的更多信息,请参阅this page on MDN

答案 1 :(得分:1)

您需要使用&&代替||,否则会导致无限循环。此处您可以使用do..while,这对您来说是最合适的选择。

&#13;
&#13;
var inputName;
var namesArray = [];

do {
  inputName = prompt("Enter a name", "");
  if (inputName != "" && inputName != null) // check value is null or empty
    namesArray.push(inputName);
} while (inputName != "" && inputName != null);

namesArray.sort();

var namesList = namesArray.join("<br/>");

document.write(namesList);
&#13;
&#13;
&#13;

或者使用相同的代码,您需要在{/ 1>}内放置prompt

&#13;
&#13;
var inputName = prompt("Enter a name", "");
var namesArray = [];

while (inputName != "" && inputName != null) {
  //                  --^-- you need to use && here
  namesArray.push(inputName); // push the value to array
  inputName = prompt("Enter a name", ""); // prompt for new value
}

namesArray.sort();

var namesList = namesArray.join("<br/>");

document.write(namesList);
&#13;
&#13;
&#13;