匹配预期字符串在技术上更有效率是什么?

时间:2012-06-15 04:59:06

标签: javascript

什么更好?如果:

function a(){};

然后处理这个

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

还是这个?

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

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

3 个答案:

答案 0 :(得分:2)

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

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

这是一个巨大的边距(第一个比我计算机上第二个 快54倍)。

答案 1 :(得分:1)

快一点(可能你记得它:

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

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

var a = function(){};
if(  a.constructor == Function ){ a() };

答案 2 :(得分:-1)

你不对。 typeof a == "function"更快。

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