JavaScript,如果替代
作者:互联网
参见英文答案 > Question mark and colon in JavaScript 7个
这段代码代表什么?我知道它是某种替代语法……
pattern.Gotoccurance.score != null ? pattern.Gotoccurance.score : '0'
更新:
这种编码有什么需要?这是效率更高还是只是一个效率相同的缩短版本?
解决方法:
它是conditional运算符,它相当于这样的东西:
if (pattern.Gotoccurance.score != null) {
pattern.Gotoccurance.score;
} else {
'0';
}
但我认为你发布的代码中缺少一个赋值语句,如下所示:
var score = pattern.Gotoccurance.score !=null ? pattern.Gotoccurance.score : '0';
如果pattern.Gotoccurance.score不为null,则将分配score变量:
var score;
if (pattern.Gotoccurance.score != null) {
score = pattern.Gotoccurance.score;
} else {
score = '0';
}
在JavaScript中执行此类“默认值”赋值的常见模式是使用逻辑OR运算符(||):
var score = pattern.Gotoccurance.score || '0';
仅当该值不是假值时,才会将pattern.Gotoccurance.score的值分配给score变量(假值为false,null,undefined,0,零长度字符串或NaN).
否则,如果它是假的’0’将被分配.
更新:性能将是等效的,您应该专注于可读性,我尝试在非常简单的表达式上使用三元运算符,并且您还可以改进格式,将其分成两行以使其更具可读性:
var status = (age >= 18) ? "adult"
: "minor";
相关问题:
> To Ternary or Not To Ternary?
标签:javascript,ternary-operator,conditional-operator 来源: https://codeday.me/bug/20190919/1812359.html