我知道我可以测试一个JavaScript变量,然后定义它,如果它是未定义的,但有没有某种方式说

var setVariable = localStorage.getItem('value') || 0;

这似乎是一种更清晰的方式,我很确定我在其他语言中见过这种情况。


当前回答

ES2020回答

使用Nullish Coalescing Operator,如果value为空或未定义,则可以设置默认值。

const setVariable = localStorage.getItem('value') ?? 0;

但是,您应该注意,空合并运算符不会为其他类型的假值(如0和")返回默认值。

但是,一定要注意浏览器的支持。您可能需要使用像Babel这样的JavaScript编译器将其转换为向后兼容的内容。如果你正在使用Node.js,它从版本14开始就被支持了。

其他回答

我需要在几个地方“设置一个未定义的变量”。我用@Alnitak answer创建了一个函数。希望它能帮助到某些人。

function setDefaultVal(value, defaultValue){
   return (value === undefined) ? defaultValue : value;
}  

用法:

hasPoints = setDefaultVal(this.hasPoints, true);

var setVariable = (typeof localStorage getItem(’value’)! = =’undefined’&& localStorage getItem(’value’))| | 0;

2018年ES6的答案是:

return Object.is(x, undefined) ? y : x;

如果变量x未定义,返回变量y…否则,如果定义了变量x,则返回变量x。

即使默认值是布尔值也有效:

var setVariable = ( (b = 0) => b )( localStorage.getItem('value') );

在我看来,对于当前的javascript实现,

var [result='default']=[possiblyUndefinedValue]

是一种很好的方法(使用对象解构)。