2013年8月22日 星期四

使用雙驚嘆號 !! 的寫程式技巧

之前瀏覽HTML5 Rocks的時候 看到一段Code如下:
function hasGetUserMedia() {
  // Note: Opera is unprefixed.
  return !!(navigator.getUserMedia || navigator.webkitGetUserMedia ||
            navigator.mozGetUserMedia || navigator.msGetUserMedia);
}
轉貼自 http://www.html5rocks.com/en/tutorials/getusermedia/intro/

其中的return 使用了兩個驚嘆號(!!) 這是什麼意思呢?

目的:
兩個!!的功用主要是將值轉為true跟false,也就是說,這個函式回傳的,只會有true跟false。


在Javascript當中,有些值跟false是等價的:

  • false
  • Null
  • undefined
  • 空字串(ex. "" or \'')
  • 數字0
  • 數字Nan


第一個!的功用就是將以上的值轉為true,其他的值轉為false
第二的!再將true轉為false,false轉為true,也就是轉回來

確保回傳的值是boolean。

使用上會比Boolean()還要簡單,速度也比較快

如果要知道速度的數據,可以參考底下連結

refs from http://www.jquery4u.com/javascript/javascript-double-negation-trick-trouble

1 則留言:

  1. 您好,想請問一下,您說的「使用上會比Boolean()還要簡單,速度也比較快」,可否知道原因使它比較快??

    回覆刪除