Javascript 从技术上讲,什么更有效地匹配预期字符串?

Javascript 从技术上讲,什么更有效地匹配预期字符串?,javascript,Javascript,什么更好?如果: function a(){}; 那么处理这件事快吗 if(typeof a == "function"){func(arg);} 还是这个 if(!(typeof a).search("f")){func(arg);} 我之所以问这个问题,是因为在我看来,匹配字符串的第一个符号比匹配整个字符串更容易,不是吗?有兴趣确认一下。你说得不对类型a==“函数”更快 这里是一个jsPerf测试 您的第一个代码块:527021419每秒操作数 您的第二个代码块:9803840每秒操

什么更好?如果:

function a(){};
那么处理这件事快吗

if(typeof a == "function"){func(arg);}
还是这个

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

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

你说得不对<代码>类型a==“函数”更快

这里是一个jsPerf测试

  • 您的第一个代码块:
    527021419
    每秒操作数
  • 您的第二个代码块:
    9803840
    每秒操作数
这是一个巨大的差距(第一个比我电脑上的第二个快54倍)。

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

var a = function(){};
if( ( typeof a )[ 0 ] == 'f' ){a()};
但下面的代码比上面的代码快20倍左右:

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

奇怪的是,在Chrome 19上,我得到了相反的结果,即,
==“function”
更快。你确定吗?
!(a的类型)。搜索(“f”)
对我来说慢了11倍。无论如何,感谢链接到jsperf