2012-12-14 22 views
0

如果將參數或具有完整屬性的對象傳遞到函數中,檢查未定義的參數並將默認值指定給未定義的值是非常有用的。如果將未定義的值指定爲默認值,則可以使用Javascript最短檢查

如果不使用像jQuery範圍這樣的庫函數,那麼執行這種指定默認值的最短代碼會是什麼?

這是我能想到的最短:

var test; 
var output = (typeof test != "undefined") ? test : "Default"; 

之前有人建議:

var test; 
var output = test || "Default"; 

這不會有假,0或 「」

+0

'undefined'是一個關鍵字,所以你不應該把它放在引號中。 – War10ck

+1

@ War10ck'typeof'運算符總是返回一個字符串,這就是爲什麼需要引號。 – Teemu

+0

@Teemu不知道。猜猜我需要更多的研究。每天學些新東西。我對此表示歉意。感謝您的更正。 :) – War10ck

回答

1

嘗試這方面的工作:

var output = test != null ? test : "Default"; 

IG:

null == undefined // true 
null == null // true 
null == 0 // false 
null == "" //false 
null == false // false 
0

你可以試試這個:

var output = if(test === undefined) ? test: "Default"; 

如果你知道你將永遠不會通過0false,或""你可以簡化爲有效參數,這是:

var output = if(test) ? test : "Default"; 

但是,這進入了JavaScript的神祕的「truthy falsey」部分。通過讓===進行類型比較的等式檢查。

希望這會有所幫助。

0

好了,如果「未定義」它的類型的最長值,檢查對象存在的捷徑是

!(typeof console).charAt(8) 

其中「控制檯」是我們examinated對象。 .charAt(8)將返回空字符串「」如果對象是比任何其他「未定義」,這等於 這對老IE支持的安全方法。但是,如果您只需要現代瀏覽器支持,則只能使用

if(!(typeof console)[8]) { doWork(); } 

檢查是否定義了該對象。