0

我毫不怀疑这是一个问题的重复,但我找不到正确的搜索词。

我想要一个速记变量声明,如果它是假的,就不会被定义。我记得它看起来像这样:

 var jamie = jamie : 'or maybe not';

如果这更容易理解,这就是我真正想要实现的目标。

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

请记住,我不知道它是什么。

4

4 回答 4

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

您可以使用上述内容进行合并

这是一个包含更多详细信息的答案 JavaScript 中是否存在“空值合并”运算符?

如果你想要简写符号if

试试这个:

boolCondition ? "OneStringForTrue" : "AnotherForFalse"

这通常被称为

Conditional (Ternary) Operator (?:) (JavaScript)
于 2013-10-21T21:40:58.617 回答
3
var jamie = jamie || 'or maybe not';

就那么简单。

于 2013-10-21T21:41:32.620 回答
1

首先,初始化loggedIn的最简单方法是简单地将hasClass的返回值赋给它,它是一个布尔值:

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

您记得的是一种为变量提供默认值的简短方法,通过使用逻辑 OR 运算符返回第一个值为 true 的值,或者如果全部为 false 则返回最后一个值:

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

最后,|| 运算符在变量的初始值为假的某些边缘情况下失败:

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.

在这种情况下(通常发生在您只想检查nulland时undefined),并非所有虚假值,您都可以使用条件运算符:

number = number != null ? number : 10;

它稍微有点冗长,但仍然是提供默认值的一种非常优雅的方式。

于 2013-10-21T22:09:30.750 回答
1

hasClass 已经是布尔值:

var loggedin = $('body').hasClass('loggedin');
于 2013-10-21T21:52:32.683 回答