-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,4191 秒あたりの操作数。
  • 2 番目のコード チャンク: 9,803,8401 秒あたりの操作数。

これは大きなマージンです (私のコンピューターでは、最初のものは 2 番目のものよりも 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 に答える