我正在尝试创建一个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);
答案 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
的任何虚假值,其中包括null
,undefined
,""
,NaN
,{{ 1}}。由于您对false
和null
特别感兴趣,因此这将更简单地涵盖这些内容。有关falsey的更多信息,请参阅this page on MDN。
答案 1 :(得分:1)
您需要使用&&
代替||
,否则会导致无限循环。此处您可以使用do..while
,这对您来说是最合适的选择。
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;
或者使用相同的代码,您需要在{/ 1>}内放置prompt
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;