我毫不怀疑这是一个问题的重复,但我找不到正确的搜索字词。
我想要一个简写变量声明,如果它是false则不会被定义。我记得它看起来像这样:
var jamie = jamie : 'or maybe not';
如果这样可以更容易理解,那么这就是我实际想要实现的目标。
if($('body').hasClass('loggedin')){
var loggedin = true;
}
记住,我不知道它是什么。
答案 0 :(得分:7)
var jamie = someVarThatCanBeUndefined || 'or maybe not';
您可以使用上述内容进行合并
以下是更多细节的答案 Is there a "null coalescing" operator in JavaScript?
如果您想要if
请改为尝试:
boolCondition ? "OneStringForTrue" : "AnotherForFalse"
这通常被称为
Conditional (Ternary) Operator (?:) (JavaScript)
答案 1 :(得分:3)
var jamie = jamie || 'or maybe not';
这很简单。
答案 2 :(得分:1)
hasClass已经布尔:
var loggedin = $('body').hasClass('loggedin');
答案 3 :(得分:1)
首先,初始化loggedIn的最简单方法是简单地为它指定hasClass的返回值,这是一个布尔值:
var loggedin = $('body').hasClass('loggedin');
您记得的是为变量提供默认值的简短方法,使用逻辑OR运算符返回第一个值为true的值或最后一个值(如果all为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.
在这种情况下(通常在您只想检查null
和undefined
时),而不是所有的假值,您可以使用条件运算符:
number = number != null ? number : 10;
它稍微冗长一点,但仍然是提供默认值的优雅方式。