2013-05-29 69 views
4

哪一個更好的方法,以找到一個變量的類型是否爲函數的找到變量的更好方法是函數?

typeof(methodName) == typeof(Function) 

typeof methodName === 'function' 
+1

下面有一個[JSPerf](http://jsperf.com/typeof-string -vs-typeof)用一些方法來確定一個變量是否是''「function」的類型' – C5H8NNaO4

回答

0

這是較好的方法

if (typeof methodName === 'function') { 
    // Do your stuff 
} 
1

通常的解決方案中,其中一個你會發現,例如在jQuery源代碼(example),是第二個:

typeof value === 'function' 

它比第一速度更快,因爲你不需要調用第二typeof,只是我們沒有理由使用第一個爲ECMAScript specifies that it has to be "function"

enter image description here

0

typeof運算符返回字符串,指示未評估操作數的類型。因此,這是正確的 -

typeof methodName === 'function' 

參見:typeof

5

有兩件事情怎麼回事:

  1. 括號 - typeof是一個運營商,而不是一個功能,不使用它們
  2. 'function'typeof Function比較(除非有人在旋轉並覆蓋原生對象,否則將始終返回'function')。使用字符串,它需要較少的工作,並且不受上述的擰緊。

即使用:

typeof methodName === 'function' 
1

第二個具有更好的性能並且在許多使用JavaScript庫

+0

@dystroy在說明第一個有更好的性能之前有一個評論..我想他刪除了評論以及他的答案。他在他的[小提琴](http://jsfiddle.net/RienNeVaPlus/ysuAs/2/) – C5H8NNaO4

+1

@ C5H8NNaO4中通過錯誤代碼導致了結論,這很清楚,我想知道。 –

相關問題