布爾運算符

一、概述
布爾運算符用于將表達式轉為布爾值,一共分為四個運算符:

  • 取反運算符!
  • 且運算符&&
  • 或運算符||
  • 三元運算符?:

二、取反運算符:
1、取反運算符用于將布爾值變?yōu)橄喾粗?,對于非布爾值,取反運算符會將其轉為布爾值。

!true //false
!false //true

2、以下六個值取反后為true,其他值都為false。
undefined,null,NaN,0,''(空字符串),false。
三、 且運算符和或運算符
1、且運算符和或運算符往往用于多個表達式的求值。
2、運算規(guī)則:

  • 且運算符可以多個連用,這時返回第一個布爾值為false的表達式的值,不再執(zhí)行后面的表達式。如果所有表達式的布爾值都為true,則返回最后一個表達式的值。
  • 或運算符可以多個連用,這時返回第一個布爾值為true的表達式的值,不再執(zhí)行后面的表達式。如果所有表達式的布爾值都為false,則返回最后一個表達式的值。

3、短路

var x = 1;
(1 - 1) && ( x += 1) // 0
x // 1

var x = 1;
(1 + 1) || ( x += 1) // 2
x // 1

這種只通過第一個表達式的值,控制是否運行第二個表達式的機制,就稱為“短路”(short-cut)。
4、可能的使用

  • 且運算符的"短路"被有些程序員用于取代if結構,比如下面是一段if結構的代碼,就可以用且運算符改寫。
if (i) {
  doSomething();
}

// 等價于
i && doSomething();

上面代碼的兩種寫法是等價的,但是后一種不容易看出目的,也不容易除錯,建議謹慎使用。

  • 或運算符常用于為一個變量設置默認值。
function saveText(text) {
  text = text || '';
  // ...
}

// 或者寫成
saveText(this.text || '')

上面代碼表示,如果函數調用時,沒有提供參數,則該參數默認設置為空字符串。
四、三元運算符
三元條件運算符由問號(?)和冒號(:)組成,分隔三個表達式。它是 JavaScript 語言唯一一個需要三個運算子的運算符。如果第一個表達式的布爾值為true,則返回第二個表達式的值,否則返回第三個表達式的值。

't' ? 'hello' : 'world' // "hello"
0 ? 'hello' : 'world' // "world"

上面代碼的t和0的布爾值分別為true和false,所以分別返回第二個和第三個表達式的值。
通常來說,三元條件表達式與if...else語句具有同樣表達效果,前者可以表達的,后者也能表達。但是兩者具有一個重大差別,if...else是語句,沒有返回值;三元條件表達式是表達式,具有返回值。所以,在需要返回值的場合,只能使用三元條件表達式,而不能使用if..else。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 運算符是處理數據的基本方法,用來從現有的值得到新的值。JavaScript 提供了多種運算符,本章逐一介紹這些運算...
    徵羽kid閱讀 777評論 0 0
  • 運算符是處理數據的基本方法,用來從現有的值得到新的值。JavaScript 提供了多種運算符,本章逐一介紹這些運算...
    許先生__閱讀 697評論 0 3
  • 算術運算符 JavaScript 共提供10個算術運算符,用來完成基本的算術運算。 加法運算符:x + y 減法運...
    guyigg閱讀 1,374評論 0 1
  • 前言: 最近在學習javascript中數據類型、運算符,以及運算符優(yōu)先級等相關基礎知識,相對簡單、基礎但也很重要...
    饑人谷_遠方閱讀 856評論 0 3
  • 閉好你們的窗子吧 閉好你們的大門吧 別讓我進去,別讓我進去 別讓我進到你們的小屋里 我有著寒冷的體溫 我?guī)е唤z悲...
    劉敬一帥哥閱讀 239評論 0 1

友情鏈接更多精彩內容