2013-10-21 177 views
0

我毫不懷疑這是一個問題的重複,但我無法找到正確的搜索條件。Javascript聲明變量if語句

我想要一個速記變量聲明,如果它的假將不會被定義。我記得它看起來像這樣:

var jamie = jamie : 'or maybe not'; 

如果這使得它更容易理解,這就是我實際上試圖實現的。

if($('body').hasClass('loggedin')){ 
     var loggedin = true; 
    } 

請記住,我不知道它是什麼。

+0

變量在賦值過程中如何可能是錯誤的?你能解釋一下你在做什麼,或者你想做什麼? –

+0

忘記了這個問題寫得有多糟糕:)雖然我很好,但我現在更新:) –

+0

我不明白你的「我實際想要達到什麼」與原始問題有任何關係。 –

回答

6
var jamie = someVarThatCanBeUndefined || 'or maybe not'; 

您可以用上面的做合併

這裏有更多的細節 Is there a "null coalescing" operator in JavaScript?

如果你想速記符號爲if

試試這個答案:

boolCondition ? "OneStringForTrue" : "AnotherForFalse" 

這通常被稱爲

Conditional (Ternary) Operator (?:) (JavaScript) 
+0

爲什麼'|'和'不'||? –

+0

提醒什麼的簡寫叫這個請:) –

+0

我已經更新爲使用|| – TGH

3
var jamie = jamie || 'or maybe not'; 

這麼簡單。

1

hasClass已經布爾:

var loggedin = $('body').hasClass('loggedin'); 
+0

燁,我只記得這一點,並有一個「面子掌」的時刻。 –

1

首先,初始化的loggedIn最簡單的方式是通過簡單地分配給它hasClass的返回值,這是一個布爾值:

var loggedin = $('body').hasClass('loggedin'); 

什麼你請記住,通過使用邏輯OR運算符可以爲變量提供默認值的簡短方法,該運算符可返回評估爲true的第一個值,如果全部爲false,則返回最後一個值:

jamie = jamie || 'or maybe not'; // identical to if (!jamie) jamie = 'or maybe not'; 

最後,運營商在某些邊緣情況下,該變量的初始值是falsy失敗:

function f(number) { 
    number = number || 10; // if number is not provided, default to 10 
    console.log(number); 
} 
f(0) // whoops, number was provided, but it will log 10 instead. 

在這種情況下(如果你想檢查只是針對nullundefined經常發生),不是所有的falsy值,可以使用有條件的運營商:

number = number != null ? number : 10; 

它稍微更冗長,但仍然相當優雅的方式來提供默認值。