javascript基礎:邏輯運算符

一、&&/||返回可以被轉換爲布爾值的值數組

&&操做符不必定返回布爾值true/false,但老是返回一個能轉換爲布爾值的值,這決定於用於比較的是什麼值。函數

非0數字轉爲true,數字0轉爲false,null、undefined轉爲false,對象、數組、函數表達式、非空字符串轉爲true,空字符轉爲false,函數執行時返回計算結果。對象

注意即便是空數組或不含任何屬性的對象都返回true。字符串

含有NaN類型的比較返回NaN。io

&&的操做順序是從左至右,當左邊的計算值爲false或轉換後的值爲false時,右邊的值計算值將再也不比較。console

function t(){
  return 0 && -1;
}
console.log(t());function

0co

上式中,0 && –1邏輯與比較,由於0轉換爲布爾值爲false,所以,-1再也不計算比較,只計算左邊的值--0。block

console.log(function(){} && -1);字符

-1

特殊狀況:

console.log(NaN && -1);

NaN

console.log([] && -1);

-1

若是邏輯與比較左邊的運算結果爲true,則返回最後一位比較結果。

console.log(true && {} && 0);

0

最後的結果爲0,由於0轉換爲布爾值爲false。所以在判斷中

if(true && {} && 0)

     alert(‘ok’);

else

     alert(‘fail’);

中,將彈出fail。

二、邏輯運算符在實際中的運用

同行執行多個計算:

fun1() && fun2();

若是fun1運算結果爲true,則繼續執行fun2,它不計較fun2最後返回的是什麼結果。

var aa = aa || 1;
console.log(aa);

1

這利用了||會返回結果的特性。若是aa已定義,則返回aa定義的值,若是沒有,則返回數字1。

var a = 1 && [];
console.log(a);

[]

若是一個函數不返回結果,則默認返回undefined。

function Y(){
}
console.log(Y());

undefined

相關文章
相關標籤/搜索