4

哪种方法更好地确定变量是否属于函数类型

typeof(methodName) == typeof(Function)

或者

typeof methodName === 'function'
4

5 回答 5

5

这里有两件事:

  1. 括号——typeof是运算符,不是函数,不要使用它们
  2. 'function'or比较(除非有人乱搞并覆盖本机对象,否则typeof Function它将始终返回)。'function'使用绳子,它需要更少的工作,并且不受上述拧紧的影响。

即使用:

typeof methodName === 'function'
于 2013-05-29T06:32:59.903 回答
1

通常的解决方案,例如在 jQuery 源代码 ( example )中可以找到的解决方案是第二种:

typeof value === 'function'

它比第一个更快,因为您不需要调用第二个typeof,并且根本没有理由使用第一个,因为ECMAScript 指定它必须是 "function"

在此处输入图像描述

于 2013-05-29T06:32:51.607 回答
1

第二个具有更好的性能并在许多 javascript 库中使用

于 2013-05-29T06:34:26.357 回答
0

这是更好的方法

if (typeof methodName === 'function') {
   // Do your stuff
}
于 2013-05-29T06:32:46.837 回答
0

typeof 运算符返回一个字符串,指示未计算的操作数的类型。所以这是正确的——

typeof methodName === 'function'

也可以看看:typeof

于 2013-05-29T06:32:59.540 回答