表達式Q ? A : B
在 Q 求值爲 TRUE 時的值爲 A ,在 Q 求值爲 FALSE 時的值爲 B 。
例如下面判斷奇數偶數的例子:
var numbuer = 5 ;
if(numbuer%2!=0){
document.write("該數爲奇數");
}
else{
document.write("該數爲偶數");
}
改寫爲三目表達式時爲:
var numbuer = 5 ;
document.write("該數爲" + numbuer%2!=0 ? "奇數":"偶數");
但是發現輸出結果僅剩一個奇數,這就是運算的優先級問題,出錯的原因是 ?的運算優先級比 + 低,所以實際運行的語句是:
document.write("該數爲true" ? "奇數":"偶數");
而在JS中,字符串是爲真的,所以會輸出奇數。
所以上述應改爲:
var numbuer = 5 ;
document.write("該數爲" + (numbuer%2!=0 ? "奇數":"偶數"));
其中可以記住的是:
不是false, 0, undefined, NaN, “” or null,js都認爲是true;