2013-09-22 63 views
0

工作,我曾與三元運營商,但這樣的事情以前從來沒有見過,與三元運營商在Javascript

.replace('{{name}}', ticket['areaName'] ? ticket['areaName'] : !area && ticket['catName'] ? ticket['catName'] : '--') 

任何人都可以把它轉變爲人類語言或非標準的if else僞代碼?

+1

eeeeeeeeew用火殺死它。 – PeeHaa

+0

什麼部分你不明白? – SLaks

回答

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); 

(和是的,我可能會打破它,至少用括號和換行符號需要做出艱苦的生活對人們想讀一個人的代碼)

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); 
+0

+1頂部細目,def。有用。 –