我曾与三元运营商合作过但从未见过类似的东西:
.replace('{{name}}', ticket['areaName'] ? ticket['areaName'] : !area && ticket['catName'] ? ticket['catName'] : '--')
任何人都可以将其翻译成人类语言或标准,如果是其他伪代码吗?
答案 0 :(得分:3)
它只是一个条件运算符表达式,其中第三个操作数中的表达式是另一个条件运算符表达式:
var temp;
if (ticket['areaName']) { // First conditional's first operand (test)
temp = ticket['areaName']; // First conditional's second operand (true case expression)
}
// All of the following is the first conditional's third operand (the false case expression)
else if (!area && ticket['catName']) { // Second conditional's first operand (test)
temp = ticket['catName']; // Second conditional's second operand (true case expression)
}
else {
temp = '--'; // Second conditional's third operand (false case expression)
}
/*...*/.replace('{{name}}', temp);
(是的,我可能会打破它,至少是用parens和换行符。不需要让那些试图阅读一个代码的人生活困难。)
答案 1 :(得分:2)
让我们稍微美化你的代码,以便你可以轻松地将它可视化:
.replace('{{name}}', ticket['areaName'] // if
? ticket['areaName'] // then
: !area && ticket['catName'] // else if
? ticket['catName'] // then
: '--') // else
因此,第一个条件运算符的第三个表达式本身就是一个条件运算符。它基本上是if-else if-else
阶梯:
var replacement;
if (ticket['areaName']) {
replacement = ticket['areaName'];
} else if (!area && ticket['catName']) {
replacement = ticket['catName'];
} else {
replacement = '--';
}
.replace('{{name}}', replacement);