我与三元运算符一起工作,但以前从未见过这样的事情:
.replace('{{name}}', ticket['areaName'] ? ticket['areaName'] : !area && ticket['catName'] ? ticket['catName'] : '--')
如果还有伪代码,任何人都可以将其翻译成人类语言或标准吗?
我与三元运算符一起工作,但以前从未见过这样的事情:
.replace('{{name}}', ticket['areaName'] ? ticket['areaName'] : !area && ticket['catName'] ? ticket['catName'] : '--')
如果还有伪代码,任何人都可以将其翻译成人类语言或标准吗?
它只是一个条件运算符表达式,其中第三个操作数中的表达式是另一个条件运算符表达式:
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);
(是的,我可能会把它拆开,至少用括号和换行符。没有必要让那些试图阅读代码的人变得艰难。)
让我们稍微美化一下您的代码,以便您可以轻松地对其进行可视化:
.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);