JS 中的布爾運算符 && 和 ||
阿新 • • 發佈:2019-01-12
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 中的布爾運算符 && 和 ||