2013-10-21 129 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; 

它稍微更冗长,但仍然相当优雅的方式来提供默认值。