1. 程式人生 > >JS 中的布爾運算符 && 和 ||

JS 中的布爾運算符 && 和 ||

som 分享 image 圖片 數據類型轉化 || ron rip 布爾值

布爾運算符 && 和 ||的返回結果不一定是布爾值!由此來展開一定的研究及理解。

1.首先先介紹下常見的數據類型轉化為bool後的值。

(常用地方)在if表達式中,javascript先把條件表達式轉換成bool值再進行判斷

技術分享圖片

2.下面來介紹下邏輯與&& 邏輯非|| 的運算後的返回結果

邏輯與 &&

var i="真值" && "任意值" ;=> i結果為任意值

var i="假值" &&  "任意值"; => i 結果為左側假值  //假值包括 null false 0 undefined 空字符串

邏輯或 ||

var i="真值" || "任意值" ;=> i結果為’真值’ //真值包括 object  function 0之外的數字 字符串

var i="假值" ||  "任意值"; => i 結果為‘任意值’  

下面給個示例::

技術分享圖片

3.邏輯與&&和邏輯或||都屬於短路操作。

什麽叫做短路操作呢,即如果第一個操作數能夠決定結果,那麽就不會再對第二個操作數求值。

var found = true;
var result = (found && someUndefineVariable); //這裏會發生錯誤
 alert (result); //這裏不會執行

在上面代碼中,當執行邏輯與操作時會發生錯誤,因為變量someUndefineVariable沒有聲明,由於found為true,所以邏輯與會對變量someUndefineVariable求值,由於someUndefineVariable沒定義,所以會報錯,如果found為false的話,則不會對someUndefineVariable進行求值,就有輸出結果。 (ps不能再邏輯與中使用未定義的值)。邏輯非||也與邏輯與&&類似,當左側表達式為 真值時,則不對右側表達式進行求值。

綜上: 在循環的時候 選擇 if...else .... 三目運算符, 還是這種邏輯運算符有沒有更加有心得呢

JS 中的布爾運算符 && 和 ||