2013-06-22 22 views
3

我一直使用以下語法來確保輸入變量不是null在JavaScript中提供默認字符串參數

function f(input){ 
    if(input === null) 
    input = ""; 
    ... 
} 

最近,我注意到它表達它的時間更短,如下所示。

function f(input){ 
    input = input ? input : ""; 
    ... 
} 

但是,我也看到了這種語法。

function f(input){ 
    input = input || ""; 
    ... 
} 
  1. 是那些相當於(不他們做了什麼如何他們這樣做)?
  2. 哪個是最值得推薦的(可讀性等)?

請注意,我將嚴格處理字符串的輸入,使其有效或無效(根本不提供)。如果我想擴大保護範圍以包括其他類型,我應該考慮哪些其他問題?

+2

另一個 - 'input || (input =「」);' –

+0

@VitaliyPetrychuk會更快嗎?另外 - 我希望在你的建議前面有* return *或* input = *。我錯了嗎? –

+0

我不認爲這是你必須優化的代碼:) –

回答

3

首先,請注意它們並不完全相同。 #2和#3的結果完全相同:除非input爲真,請將其設置爲空字符串。 #1表示說:「除非inputnull,將其設置爲空字符串。因此,如果false被提供,input將在#1 false''在#2,#3。

如果什麼也沒有#1提供(即f()inputundefined,因爲這是當一個參數丟失,不null傳遞價值其中一個可以解決這個問題。

if(input === undefined) 
if(input == null) 

否則,是的,他們在功能上等同。對我而言,編寫它的最好方法是

input = input || ""; 

這是我的首選風格。它可能是你的;它可能不會。但是,首先,必須是一致的

+0

另外,由於OP在他的評論中擔心速度,所以你的首選樣式是[更快](http://jsperf.com/check-false-價值) – jeremy

+0

@Nile雖然區別可能樂觀地被稱爲「無窮小」。 – lonesomeday

相關問題