我想實現點擊輸入法,實現下面ul的展開與隱藏,如果我們用if else的話可能會這么寫:
oBth.onclick=function(){ if (oUl.style.display=='block') { oUl.style.display=='none'; }else{ oUl.style.display=='block'; } }
但是如果我們用三元運算符的話可能就只需要下面這一行代碼:
oBth.onclick=function(){ oUl.style.display == "block" ? oUl.style.display="none" :oUl.style.display="block"}
有木有很神奇。當然我只是用了一個比較容易理解的寫法,還有很大的優化空間,我們當然也可以這樣:
oBth.onclick=function(){ var style = oUl.style.display; oUl.style.display= style == "block" ? "none":"block" //這樣寫的話就一定不能忘了把運算結果重新賦值給元素 - - //oUl.style.display= (style == "block" ? "none":"block") 可讀性更高 }
上面代碼的意思是,如果style == "block" 成立的話就把none返回,不成立就返回block,然后把返回結果賦值給作用元素,不過要特別注意 = 和 == 用法和區別。因為賦值運算符(=)的優先級比較低,所以會最后執行賦值運算。如果把后面的三元運算符加上()可讀性會更高一點,但效果是一樣的。
比較容易出錯的地方:
三元運算比較容易出錯的應該就是運算的優先級問題:
var isMember = false; console.log("當前費用" + isMember ? "$2.00" : "$10.00"); //返回$2.00
出錯的原因是?的運算優先級比+低,所以實際運行的語句是:
"當前費用false" ? "$2.00" : "$10.00");
在js中字符串是為真的,所以會輸出$2.00.
不過為了避免以上錯誤的話,可以記住:
不是false, 0, undefined, NaN, "" or null,js都認為是true;
所以具體是用三元運算符還是用if else見仁見智,視具體情況而定吧。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com