為啥用三元運(yùn)算符(ternary)
condition ? expr1 : expr2
三元運(yùn)算符用來(lái)簡(jiǎn)化條件判斷
這個(gè)運(yùn)算符可以用來(lái)代替if else條件判斷。但是為什么有這個(gè)運(yùn)算符呢?這里的原因是if else使用兩個(gè)代碼塊,確只有一個(gè)會(huì)執(zhí)行,在講究的程序員看來(lái)是一種浪費(fèi)。所以使用三元運(yùn)算符用一條語(yǔ)句就可以完成功能就很有吸引力了。我們來(lái)看看下面的例子
var i=0;
var fee;
if(isMember){
fee="$2.00";
}else{
fee="$10.00";
}
fee=isMember ? "$2.00" : "$10.00";
三元運(yùn)算符用來(lái)執(zhí)行多個(gè)操作
三元運(yùn)算符的結(jié)果語(yǔ)句可以執(zhí)行多個(gè)操作,每個(gè)操作用逗號(hào)分隔就可以
var age = 23;
var car,school;
age > 18 ? (
car = "奇瑞QQ",
school = "清華第一幼兒園"
//do someting
) : (
alert("Sorry, you are much too young!")
);
這樣也精簡(jiǎn)了不少代碼。
三元運(yùn)算符容易出錯(cuò)的地方
下面這個(gè)語(yǔ)句判斷如果是會(huì)員,費(fèi)用為2美元,非會(huì)員,為10美元?,F(xiàn)在設(shè)置了非會(huì)員,卻打印出了2美元,顯然出錯(cuò)了。
var isMember = false;
console.log("當(dāng)前費(fèi)用" + isMember ? "$2.00" : "$10.00");
出錯(cuò)的原因是?號(hào)的優(yōu)先級(jí)比+號(hào)低,所以實(shí)際運(yùn)行的語(yǔ)句是
"當(dāng)前費(fèi)用false" ? "$2.00" : "$10.00");
在js中,字符串為真,所以打印出$2.00。
不是false, 0, undefined, NaN, "" or null,js都認(rèn)為是true