2013-12-17 202 views
-4

我正在创建一个基本的while循环,并且由于某种原因它无限运行。我想了解什么不是在var“days”的长度停止。while循环永远运行

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); 
} 
} 
+3

提示您的下一个问题http://jshint.com – elclanrs

+0

'if(day1 = 358)'你为什么将358分配给day1? –

+0

我敢打赌,在控制台上看起来每天都是圣诞节。 –

回答

6

当你说

if (day1 = 358) { 

你是不是比较值,但在每次迭代分配358day1。所以,这个值永远不会改变。这就是为什么它会陷入无限循环。为了解决这个问题,

这样

if (day1 === 358) { 
9

原因使用比较操作符是因为你正在做的,而不是比较(===)和可变day1的值赋值(=)仍然是358,直到永远。你也可能注意到它记录了“今天是圣诞节”,总是因为这个任务,结果是一个非零值,这使得它永远是真的。

变化

if (day1 = 358) { 

if (day1 === 358) { 

只是为了比较过程中添加上你也可以使用==以及它做一个类型强制(这是不是在你的情况需要),以及,但===是严格的平等比较,在大多数情况下推荐使用。

+0

很酷谢谢你,我知道这是超级简单的东西:) n圣诞快乐! – jstone

+0

@jstone欢迎您和圣诞快乐!:) – PSL

+0

@PSL - 你应该也提到了'=='和'==='之间的区别。 –