Jam*_*mes 4 javascript boolean short-circuiting logical-operators
我想知道是否有办法解决这个问题。我目前正在将值存储在变量中,如下所示:
Session['Score'] = 0;
Run Code Online (Sandbox Code Playgroud)
后来我有一个这样的作业:
Score = Session['Score'] || 'not set';
Run Code Online (Sandbox Code Playgroud)
问题是,当Session['Score']设置0为上面的值时,JavaScript 会将其解释为:
Score = false || 'not set';
Run Code Online (Sandbox Code Playgroud)
这意味着Score将评估为'not set'而不是0!
我该如何解决这个问题?
现在,您可以使用空合并运算符 (??)而不是逻辑 OR。它与逻辑 OR 类似,不同之处在于,当左侧为 null ( nullor undefined) 而不是falsy时,它仅返回右侧。
score = Session['Score'] ?? 'not set';
Run Code Online (Sandbox Code Playgroud)
旧答案:
最干净的方法可能是设置值,然后检查它是否为假但不等于0
let score = Session['Score'];
if (!score && score !== 0) {
score = 'not set';
}
Run Code Online (Sandbox Code Playgroud)
正如Patrick Roberts提到的,您还可以选择将条件(三元)运算符与运算符结合使用in:
Score = 'Score' in Session ? Session.Score : 'not set'
Run Code Online (Sandbox Code Playgroud)