2011-04-13 39 views
0

我是新來的JavaScript和我看似簡單的if/else語句的問題。簡單的JavaScript如果不工作

任何人都可以讓我知道爲什麼下面不工作,請(IM拉我的頭髮)

var is_expanded = false; 
if (is_expanded==false) { 
    alert('no'); 
    is_expanded = true; 
} else { 
    alert('yes'); 
} 

我總是得到「沒有」的提示(我從來沒有else部分)。

乾杯任何幫助。

回答

1

您上一行代碼表示var is_expanded = false; 這意味着if (is_expanded==false)將始終評估爲true

所以,這正是你所得到的輸出。你期望什麼?

下次調用同一方法時,由於第一行代碼,is_expanded的值再次重置爲false。然後它會再次提醒no

9

這是按設計工作的。

當你說if時,檢查條件。然後它進入正確的區塊,在這種情況下,警告「否」。

在塊執行後,條件不會被重新評估。這不僅僅是if聲明的工作方式,也不是我知道的任何語言。

根據你想要做什麼,還有其他模式和結構可以幫助你,例如while循環。也許顯示你需要的真實用例。

2

這是因爲is_expanded始終等於false,因爲您在if語句之前將其設置爲false

否則將不會觸發,除非is_expanded等於true之前的if語句。

1

這很正常。您已將變量is_expanded設置爲false,因此在if語句中您總是輸入alert('no');部分。將變量設置爲true後,不再執行任何if語句。

1
var is_expanded = false; 
if (is_expanded==false) { 
    alert('no'); 
    is_expanded = true; 
} else { 
    alert('yes'); 
} 

恭喜!你的代碼工作正常,所以不要拉你的頭髮。

IF/ELSE的性質是其中只有其中一個其中每個通過。因此,您的代碼會檢查is_expanded是否爲FALSE。如果它是錯誤的,它將運行IF部分。如果不是,它將運行ELSE部分。

只讀它像英語。

If something, do this. Otherwise, do something else

即使你改變變量的內部塊的一個值,都不會有問題,因爲一旦檢查模塊,它移動。