什么更好?如果:
function a(){};
那么处理这个是否更快
if(typeof a == "function"){func(arg);}
或这个?
if(!(typeof a).search("f")){func(arg);}
我只是问这个,因为在我看来,匹配字符串的第一个符号比匹配整个字符串更容易,不是吗?有兴趣确定。
什么更好?如果:
function a(){};
那么处理这个是否更快
if(typeof a == "function"){func(arg);}
或这个?
if(!(typeof a).search("f")){func(arg);}
我只是问这个,因为在我看来,匹配字符串的第一个符号比匹配整个字符串更容易,不是吗?有兴趣确定。
这是一个 jsPerf 测试http://jsperf.com/typeof-test12。
527,021,419
每秒操作数。9,803,840
每秒操作数。这是一个巨大的差距(第一个比我电脑上的第二个快 54 倍)。
快一点(可能你已经想到了:
var a = function(){};
if( ( typeof a )[ 0 ] == 'f' ){a()};
但是下面的代码比上面的代码快 20 倍(chrome):
var a = function(){};
if( a.constructor == Function ){ a() };
你看起来不太对劲。typeof a == "function"
是比较快的。