2016-04-22 4 views
-3

別のプロパティに関数を渡したいと思います。私はその関数が特定の関数と等しいかどうかをテストしたい:Javascript:戻り値ではなく、関数自身の等価性を確認する

function f(func) { 
    if (func === testFunc) { 
     console.log("They're the same!") 
    } 
} 

function testFunc(x) { 
    return x+1 
} 

f(testFunc) 

上記は、期待通りに機能します。トップ関数の条件式が合格し、コンソールに出力されます。私は、それ自身の性質を持つ関数を渡す場合は、等しくないと発見された:

f(testFunc(2)) 

私は、戻り値が異なるため、これがあると仮定します。では、実際の関数が戻り値ではなく同じであるかどうかをどのようにテストするのですか?方法はありますか?

+0

typeofを試しましたか? –

+1

関数* contents *をテストしますか?私は:*コード*? – MarcoS

+5

'testFunc'は関数を渡します。' testFunc(2) '***は関数を実行し、戻り値を渡します。 – deceze

答えて

0

オブジェクトの内容が同じであるかどうかを確認するには、uneval関数を使用する必要があります。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/uneval

これはevalよりも悪いので、可能であれば避けてください。

+0

のune uneを使用する必要があります。これはFirefox以外では動作しません... – deceze

+0

@decezeだから、evalより悪いです他のいくつかのブラウザでは、少なくともevalがサポートされています。 –

関連する問題