你們都知道,不管是.NET仍是java或是其餘語言都會有 或 與 非的操做,這裏我要討論的是 JS裏面的 || 和 && 操做。由於項目裏面用到了 || 的操做,原本也不是用不到,只是忽然想用一下,而後看了看其餘的博客,發現原來這個東西沒那麼簡單,JS真是高深,仍是好好研究的好。書歸正傳:html
文章參考:http://www.jb51.net/article/21339.htmjava
||操做 :首先聲明:在js邏輯運算中,0、""、null、false、undefined、NaN都會判爲false。||操做就是若是前邊的表達式爲false那麼就取後邊的值。好比 <a>||<b> 若是<a>是false,那麼取<b>的值,同理:<a>||<b>||<c>只要<a><b>都爲false 那麼取<c>。因此咱們看比較高級的js代碼裏常常會有這種代碼: var obj=obj||{};(若是obj爲undefined或者空,那麼從新定義爲{})ide
&&操做:若是前邊的表達式爲true,那麼取後邊的值,若是前邊任意一個表達式爲false,那麼取false這個值。這句話用代碼表示吧:spa
alert(typeof ("11" && undefined && "test" && {})); //結果 undefined alert(typeof([] && "test" && 5)); //結果 number 取值 5
那麼 ||操做和 &&操做有什麼用呢。它能夠精簡代碼。例如:.net
function test() { var a = 4; //if (a > 5) { alert("a是大於5的"); } else { alert("a是小於5的"); } var result = a > 5 && "a是大於5的" || "a是小於5的"; alert(result);//結果 a是小於5的,若是看不懂,在仔細看一下他們(|| &&)的定義 }
結尾:你知道這些值是什麼嗎?htm
alert(undefined); //undefined alert(typeof (null)); //object alert(typeof (undefined));//undefined alert(typeof (NaN)); //number alert(typeof (5)); //number alert(typeof (!!5)); //boolean alert(parseInt("aa123")); //NaN alert(parseInt("123aa")); //123