-1

什么更好?如果:

function a(){};

那么处理这个是否更快

if(typeof a == "function"){func(arg);}

或这个?

if(!(typeof a).search("f")){func(arg);}

我只是问这个,因为在我看来,匹配字符串的第一个符号比匹配整个字符串更容易,不是吗?有兴趣确定。

4

3 回答 3

2

这是一个 jsPerf 测试http://jsperf.com/typeof-test12

  • 您的第一个代码块:527,021,419每秒操作数。
  • 您的第二个代码块:9,803,840每秒操作数。

这是一个巨大的差距(第一个比我电脑上的第二个快 54 倍)。

于 2012-06-15T05:04:44.457 回答
1

快一点(可能你已经想到了:

var a = function(){};
if( ( typeof a )[ 0 ] == 'f' ){a()};

但是下面的代码比上面的代码快 20 倍(chrome):

var a = function(){};
if(  a.constructor == Function ){ a() };
于 2012-06-15T06:58:56.677 回答
-1

你看起来不太对劲。typeof a == "function"是比较快的。

http://jsperf.com/is-function-test

于 2012-06-15T05:03:41.330 回答