2014-04-01 74 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