2013-02-04 67 views
4

我有以下的javascript代碼:如何檢查傳遞給javascript函數的值是否爲空?

function changeButtonState(targetSelector, action, iconClass) { 
    var $target = $(targetSelector); 
    var $targetSpan = $(targetSelector + ' span'); 
    $targetSpan.removeClass('sprite-blank').addClass(iconClass); 
} 

我怎樣才能讓這個在$targetSpan.removeClass(..).addClass只有在iconClass有一個當函數被調用價值​​的工作。我想我感到困惑的是我檢查它是否被定義,或者我檢查它是否有0或更長的長度?

+0

if(iconClass && iconClass.length> 0)這樣你檢查null undefined和長度> 0 –

回答

4

只需使用一個if語句:

if (iconClass){} 

或者typeof

if (typeof iconClass != 'undefined') {} 
-1
if(iconClass.length > 0){ 
    $targetSpan.removeClass('sprite-blank').addClass(iconClass); 
} 
+0

這是壞的,如果沒有通過'.length'會拋出錯誤 –

+0

更簡潔的方法來做到這一點,只是檢查長度屬性。 if(something && something.length){}這樣,如果它未定義,它會短路。如果長度爲gt 0,則它將通過,如果長度爲== 0,則強制爲false,並且如果長度未定義,則會短路。 –

1
if (typeof(iconClass)=='undefined') { 
    // nothing was passed 
} 
1

LIVE DEMO

if ('undefined' != typeof iconClass) { /**/ } 
1

您的用例您必須假定iconClass是一個字符串。在這種情況下,我會建議第一個條件。第二個可能太嚴格了,通常只有在調用該函數的人沒有真正傳遞第三個參數或傳遞未定義時才使用。但是,如果調用者傳遞null或空字符串,則第一個if條件也會捕獲這些條件。這是最容易編寫的,它在Javascript中很常見,只需檢查if (variable) { },因爲它會捕獲更多,並且非常容易讀寫。

if (iconClass) { 
    // Executes if iconClass is not null, not undefined, not 0, and not empty string 
} 
if (typeof iconClass != 'undefined') { 
    // WILL execute if iconClass is null, 0, empty string 
    // Only will not execute if iconClass is undefined! 
} 
0

據推測,iconClass應該是一個字符串(類名),所以你應該測試,看看它是否是一個字符串:

if (typeof iconClass == 'string') 

,或者你可以使用正則表達式來測試,這是一個同時有效的類名:

if (/^[a-z][a-z0-9]*$/i.test(iconClass)) 

正則表達式可能需要更多的字符來測試(連字符至少),我會留給你。 What characters are valid in CSS class names?的接受答案可能會有所幫助。

相關問題