何が良いですか?もしも:
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
1 秒あたりの操作数。9,803,840
1 秒あたりの操作数。これは大きなマージンです (私のコンピューターでは、最初のものは 2 番目のものよりも 54 倍高速です)。
少し速い(おそらくあなたはそれを念頭に置いていた:
var a = function(){};
if( ( typeof a )[ 0 ] == 'f' ){a()};
ただし、以下のコードは上記よりも約20 倍高速です(chrome)。
var a = function(){};
if( a.constructor == Function ){ a() };
あなたは間違っている。typeof a == "function"
より高速です。