2014-04-01 48 views
0

有人可以请我解释为什么下面的代码返回一个无限循环,而不是重新定义foo为什么这个javascript循环无限地返回?

var foo = 2; 

while (foo = 2) { 
    foo = 3; 
} 

console.log('foo is ' + foo); 

当然,在第一时间通过循环将要运行,因为foo确实等于2。但是,我不明白为什么要继续跑步;在第一次通过foo现在应该设置为3后,参数应该返回false,并且console.log('foo is ' + foo);应该打印foo is 3

显然我在这里失去了一些东西。

+0

什么,即使是应该做的? – redFIVE

+1

'while(foo == 2)' –

+0

非常棒。感谢大家。 – dsparry

回答

2

您将值2分配给foo而是在这里的条件比较:

while (foo = 2)

将其更改为:

while (foo == 2)

2
while (foo == 2) { 
    foo = 3; 
} 

你缺少一个等号(或两个,如果你想要一个更严格的检查)

while (foo === 2) { 
    foo = 3; 
} 
+0

但是,它不应该有一个语法错误? –

+1

没有语法上它是完全正确的。这是一个逻辑错误。 – Aashray

+0

JavaScript有一个“truthy”和“falsey”的概念,这意味着您可以在非布尔值上使用布尔逻辑。值'2'是真的,所以'while(2)'和'while(true)'是一样的。 –

0

您可能会错过“而(富== 2)”开放循环的时候,

如果将再次打印无穷让它知道我..

+0

重要的是它工作.. – BAP