2013-09-22 98 views
0

JavaScript代碼爲什麼javascript(jquery)if語句不能像php if語句那樣工作?什麼是解決方案?

var a = 0;//remove latter 
var b = 1; 

if (a > 0) { 
alert ("a > 0"); 
} 

if (b > 0) { 
alert ("b > 0"); 
} 

所有作品(alert ("b > 0");)。

但是,如果刪除var a = 0;,那麼第二個if不起作用。

所以結論如果第一個if沒有變量,那麼第二個if不起作用。

什麼是解決方案?總是定義javascript - jquery變量?如果沒有var a,那麼var a = 0;?

+0

您的第二個條件未執行,因爲您的第一個條件中有錯誤。 解決方案可能是因爲你寫的是定義變量或使用try/catch的錯誤處理或(這是我的首選解決方案)來檢查變量是否定義 –

+0

現在我明白了。之前假設'jquery if'的工作方式就像'php if'。 'php if'會在這種情況下執行 – user2465936

+0

另外值得一提的是,您的代碼是純JavaScript代碼而不是JQuery代碼,並且沒有「jQuery if behavior」! –

回答

2

如果未聲明該變量,則JavaScript會拋出ReferenceError,因此必須聲明將在JavaScript評估中使用的任何變量。

這是bahaviour按照the spec它說

If IsUnresolvableReference(V), throw a ReferenceError exception.

所以,是的變量必須聲明如下var a, b即使它不與任何值進行初始化。

2

它無法正常工作的原因是因爲您沒有定義的a變量,並且您正在使用未定義的變量打破JavaScript。如果你刪除

if (a > 0) { 
alert ("a > 0"); 
} 

其餘的代碼應該工作。

2

如果刪除a變量的定義,你會得到一個錯誤:

ReferenceError: a is not defined 

和你的腳本將被停止。

3

如果你刪除了一個變量,javascript面臨一個錯誤(ReferenceError),所以它不會執行代碼夥伴的其餘部分。