我想知道是否有解决此问题的方法。我目前将值存储在这样的变量中:
Session['Score'] = 0;
后来我有这样的作业:
Score = Session['Score'] || 'not set';
问题是,当如上所述将Session['Score']
设置为0
时,JavaScript会将其解释为:
Score = false || 'not set';
这意味着Score
将计算为'not set'
而不是0
!
如何解决这个问题?
答案 0 :(得分:3)
最干净的方法可能是设置值,然后检查该值是否虚假但不等于0
let score = Session['Score'];
if (!score && score !== 0) {
score = 'not set';
}
如Patrick Roberts所述,您还可以选择结合使用ternary operator和in
运算符:
Score = 'Score' in Session ? Session.Score : 'not set'
答案 1 :(得分:3)
您可以使用destructuring assignment进行此操作:
let { Score = 'not set' } = Session;
如果未设置:
const Session = { };
let { Score = 'not set' } = Session;
console.log( Score );
如果将其设置为undefined
以外的任何值,包括虚假的值:
const Session = { Score: 0 };
let { Score = 'not set' } = Session;
console.log( Score );
答案 2 :(得分:1)
通过创建一些功能,您可以更明确地表达自己的意图:
function getScore(s)
{
var result = s["Score"];
if (result == null) {
result = 0;
}
return result;
}
function addScore(s, v)
{
var result = s["Score"];
if (result == null) {
result = 0;
}
result += v;
s["Score"] = result;
return result;
}
var Session = {};
document.write("Score ");
document.write(getScore(Session));
document.write("<p/>");
addScore(Session, 10);
document.write("Score ");
document.write(getScore(Session));
预期输出:
Score 0
Score 10
答案 3 :(得分:0)
使用字符串代替:
Session['Score'] = "0";
Score = Session['Score'] || 'not set';