2013-08-28 31 views
0

比方說,你有以下功能:如何聲明一個未定義的變量?

var variable; 

function(variable); 

function function(variable) { 
    alert ("variable equals " + variable); 
    if (variable != 'undefined') { 
     ~~~code1~~~ 
    } else { 
     ~~~code2~~~ 
    } 
} 

的報警輸出:

變量等於未定義

但是,永遠不會執行~~~碼2 ~~~。我猜我的語法不正確。如果我沒有定義變量,我該如何獲得函數函數來執行~~~ code2 ~~~?

額外信息

當變量變量是硬編碼的,如在下面的代碼:

var variable; 

function(variable) 

function function(variable) { 
    variable = 2; 
    alert ("variable equals " + variable); 
    if (exponent == 2) { 
     ~~~code1~~~ 
    } else { 
     ~~~code2~~~ 
    } 
} 

~~~ CODE1 ~~~被執行。

+1

嘗試做'!=='或'typeof!=='請參閱http://stackoverflow.com/questions/27509/detecting-an-undefined-object-property-in-javascript – aug

+2

您正在提醒一個變量「變量」,但如果測試是在一個名爲「指數」的變量。你描述問題的方式聽起來像你認爲你只有一個變量。對於你已經顯示的代碼,將_variable_賦值爲2會影響_exponent._的if測試是沒有意義的。此外,請澄清「undefined variable」的含義,因爲它可能意味着「存在的變量,但是保存值_undefined_「或它可能意味着」根本不存在的變量「。 – nnnnnn

+0

嗯,它似乎是重複的。我想我的搜索查詢有點不合時宜,但感謝所有回覆的人。 –

回答

3
> exponent != 'undefined' 

您需要了解Abstract Equality Comparison Algorithm。以上嘗試將exponent的值與字符串「undefined」進行比較。由於exponent已定義,但尚未分配值,因此將返回值undefined,該值不等於字符串「未定義」(根據上述算法)。

所以,你可以將其值進行比較的未定義值:

exponent != undefined 

,或者您可以使用typeof操作者用適當的字符串值進行比較值的類型(因爲它總是返回一個字符串) :

if (typeof exponent != 'undefined') 

無論您使用嚴格的或抽象的版本以上(!==!=分別)不會使在這種情況下任何區別。

+0

啊,看來我的語法錯了。謝謝一堆! –