2012-01-12 4 views
12

私はJavaScriptで以下の関数は、write関数を存在しない場合 - PHPでJavaScript

<?php 
if(x != 0) { 
echo "function myfunction(){};";  
} 
?> 

を書いている私は、関数が存在するかどうかをテストしたいと空の関数を記述していない場合

if(typeof myfunction != 'function'){ 
    function myfunction(){}; 
} 

これはFirefoxでうまくいきますが、typeofがfunctionと同じ場合でもクロムでは空の関数が作成されて作成されます。私はクロムのための回避策を見つけることができない、私は(typeof window.myfunction!= 'function)if(!myfunction)、しようとしましたが、何もここですべてのfirefoxで動作するように見えるクロムのために働くようです。何か案は?

+0

まだ回答がありませんか?私は同じ問題を抱えており、以下の解決法は私のためには機能しません。 –

答えて

29

関数宣言ではなく関数式を使用します。

if(typeof myfunction != 'function'){ 
    window.myfunction = function(){}; 
} 

(あなたの最後の段落は、あなたがグローバル関数をしたい示唆して以来、私はwindowを使用しています)

+0

これは完璧に感謝しました –

+0

答えとしてマーク? – folktrash

+0

@BretThomasこれが成功した場合は、答えとしてマークしてください。 –

6

あなたは、厳密な比較演算子を使用する必要があります!==

if(typeof myFunction !== 'function'){ 
    window.myFunction = function(){}; // for a global function or 
    NAMESPACE.myFunction = function(){}; // for a function in NAMESPACE 
} 

またJSの機能を維持しようこれにより、将来他のjsライブラリとの衝突を避けることができます。

関連する問題