在JavaScript中,如果变量未定义,则可以设置一个变量。

267

我知道我可以测试 JavaScript 变量,如果它是 undefined,那么定义它,但是是否有一种方法可以这样说:

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

看起来这是一种更清晰的方式,我相信我在其他语言中也见过类似的写法。


33
这并不是针对“未定义”的测试,而是针对“假值”的测试。 - Alnitak
5
请注意,如果用户禁用了Cookie(至少在Chrome中),则 localStorage.getItem() 将抛出异常,因此你可能需要将其包装在一个 try...catch 语句中。 - urish
2
可能是What does the construct x = x || y mean?的重复问题。 - Michał Perłakowski
13个回答

1

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

代码相关内容,意思是将本地存储中的'value'值取出并进行类型判断,如果不是undefined并且有值,则setVariable等于该值,否则等于0。

如果localStorage.getItem('value')返回false,则不会将其分配为0。 - Karl Adler

0

即使默认值是布尔值,也可以正常工作:

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

0

在当前的JavaScript实现中,我觉得

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

使用对象解构是一种很好的方式来实现这个功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接