前言
!
, &&
, ||
三個運算符是JavaScript中重要的邏輯運算符,本文將介紹這三個運算符在JavaScript實際編程中的有趣使用技巧。
取反運算符(!)
如果對一個值連續做兩次取反運算,等于將其轉為對應的布爾值,與Boolean函數的作用相同。
!!x
// 等同于Boolean(x)
復制代碼
兩次取反就是將一個值轉為布爾值的簡便寫法。
var str='test';
var bl=!!str;
bl
// trueBoolean(str)
// true
復制代碼
且運算符(&&)
且運算符的運算規則是:如果第一個運算子的布爾值為true,則返回第二個運算子的值(注意是值,不是布爾值);如果第一個運算子的布爾值為false,則直接返回第一個運算子的值,且不再對第二個運算子求值。
我們可以利用這個運算規則取代if結構,比如下面是一段if結構的代碼,就可以用且運算符改寫。
if (i) {doSomething();
}// 等價于i && doSomething();
復制代碼
這種跳過第二個運算子的機制,被稱為“短路”。
或運算符(||)
或運算符的運算規則是:如果第一個運算子的布爾值為true,則返回第一個運算子的值,且不再對第二個運算子求值;如果第一個運算子的布爾值為false,則返回第二個運算子的值。
var x = 1;
true || (x = 2) // true
x // 1
復制代碼
短路規則對這個運算符也適用。
function saveText(text) {text = text || 'test';// ...
}// 或者寫成
saveText(this.text || 'test')
復制代碼
利用短路規則,或運算符可以為一個變量設置默認值。