爲了提升學習效率斷了下網,沒想到這麼渣渣網斷了以後就連不上了=。=廢話少說,開始正題。學習
從新看紅皮書,重點記一下布爾操做符。布爾操做符有 !,&&,||、spa
一,邏輯非對象
先說說 !, 非是布爾操做符中惟一一個會把全部數據類型轉換爲布爾類型的。拿幾個特殊值爲例:效率
若是操做數爲 null,則 !null返回 true變量
若是操做數爲 undefined,則 !undefined 返回true數據類型
若是操做數爲 NaN,則 !NaN 返回trueim
有了 邏輯非,就能夠用兩個!!來判斷一個數據類型的布爾值了=.=(表問我怎麼忽然用這麼傲嬌的符號)。數據
二,邏輯與類型轉換
邏輯與是個短路操做,即若是第一個操做符是null/undefined/NaN 那麼 就直接返回 null/undefined/NaN 。undefined
若是第一個操做數是對象,則返回第二個操做數。若是兩個操做數都是對象,那麼返回第二個操做數。(注意,返回操做數不是布爾值!!!!!)。
三,邏輯或
若是第一個操做數是對象,則返回第一個操做數。若是第一個操做數求值結果爲false,則返回第二個操做數。若是兩個操做數是對象則返回第一個操做數。
若是兩個操做數都是null/NaN/undefined,則返回null/NaN/undefined。
因此咱們能夠利用邏輯或的這一行爲,避免給變量賦null/undefined。例如 var value = preferredObject || backupObject
以前一直覺得 若是不是特殊值得話,布爾操做符都會返回布爾值。果真人醜就要多讀書。