正如標題所言,js中||和&&的特性幫我們精簡了**的同時,也帶來了**可讀性的降低。這就需要我們自己來權衡了,下面有個不錯的示例,在js邏輯運算中,0、""、null、false、undefined、nan都會判為false,其他都為true.
||,先計算第乙個運算數,如果可以被轉換成true,則返回左邊這個表示式的值,否則計算第二個運算數。即使||運算子的運算數不是布林值,任然可以將它看作布林or運算,因為無論它返回的值是什麼型別,都可以被轉換為布林值。
利用它對非布林型的值會將其返回的特性:對非布林型的運算數使用||,用於選取一組備選值中的第乙個定義了的並且非空的值(第乙個為非false的值)
例:var max = max_width || obj.max_width || 500 ;
var attr = attr || 「」;這個運算經常用來判斷乙個變數是否已定義,如果沒有定義就給他乙個初始值,在給函式的引數定義乙個預設值的時比較有用。
&&,它先計算第乙個表示式,若為假,就不會去處理第二個表達;否則繼續處理後繼表示式。從左到右選取表示式的第乙個為非true的表示式的值,如果一直未找到則返回最後乙個表示式的值。
例:(其中的味道還需要細心琢磨)
2 && 『s1』 && 『123』 && 『sss』 表示式的值等於 『sss』
2 && 『s1』 && 『』 && 『sss』 表示式的值等於 『』
2 && 『s1』 && nan && 'sss』表示式的值等於 nan
if(a >=5)
可以簡成:
a >= 5 && alert(「你好」);
!!,typeof 5和typeof !!5的區別,這是一種更嚴謹的寫法,的作用是把乙個其他型別的變數轉成的bool型別。例如, if(!!attr) <=> if(attr)
js中||和&&的特性幫我們精簡了**的同時,也帶來了**可讀性的降低。這就需要我們自己來權衡了。
JS中短路運算子 和
在js函式中我們經常會使用到短路運算子,主要是邏輯與 和 邏輯或 1 邏輯與 的運算方式 var a 5 6 console.log a 返回的結果為 6 如果邏輯與運算子左邊的值布林轉換後為 true,那麼返回右邊的值 不管右邊的值是真還是假 var a false 6 console.log a...
javascript的短路運算子
短路運算子 先來段 左邊為 true 時 返回右邊 的執行結果 2 1 a 1 結果列印 後面的 執行結果 也就是 1 左邊為 false 時 返回左邊 的執行結果 2 1 a 1 結果列印 前面的 執行結果 也就是 false 以上我們得出結論 短路運算子 只有前面的 為 真 true 時才執行後...
運算子短路求值原理
運算子有乙個短路求值原理,比如a b,如果出現在條件判斷語句中,我們理解的就是a和b都要是true才能完成判斷,實際執行過程中,計算機先判斷a是否為真,若a為真再判斷b是否為真,但若a為假,則後面不會再看b的真假,也就是說如果b為乙個表示式,則不會執行這個表示式,這就是短路求值原理,舉例如下 實現求...