循环运行永远

jst*_*one -4 javascript while-loop

我正在创建一个基本的while循环,由于某种原因它无限运行.我想知道它在var"days"的长度上没有停止.

var day1 = 1
var days = 365

while (day1 <= days) {
    day1++;
 if (day1 = 358) {
    console.log('today is christmas');
 } else {
    console.log("today is day " + day1);
 }
}
Run Code Online (Sandbox Code Playgroud)

PSL*_*PSL 9

原因是因为您正在进行赋值(=)而不是比较(===),并且变量的值day1永远保持为358.你也可能已经注意到它记录"今天是圣诞节"总是因为赋值而且结果是一个非零值,这使得它总是真正的.

更改

if (day1 = 358) {
Run Code Online (Sandbox Code Playgroud)

if (day1 === 358) {
Run Code Online (Sandbox Code Playgroud)

只是为了补充你也可以使用==它做类型强制(在你的情况下不需要你)在比较期间,但是===是严格的相等比较,并且在大多数情况下建议使用.


the*_*eye 6

当你说

if (day1 = 358) {
Run Code Online (Sandbox Code Playgroud)

你是不是比较值,但是你要分配358day1每一个迭代.所以,价值永远不会改变.这就是为什么它会遇到无限循环.要解决这个问题,

像这样使用比较运算符

if (day1 === 358) {
Run Code Online (Sandbox Code Playgroud)