2011-10-23 11 views
0

なぜこの結果、私は)(_ _、定義された関数fnとしてのFFの出力でIE、FF try {} catch(){}バグ?

function _(){}; 

function fn(){ 
    try{ 
     console.info(_); 
    }catch(_){ 
     // 
    } 
    return _; 
} 

fn(); 

を関数名を定義しますが、IE8の出力は不定?元のバージョンに疑問を更新する

答えて

0

EDIT @kevinpengのおかげ

IE7は(私はそれを持っていないとして、私はテストすることはできません)
IE8はそれをサポートしていますあなたが開いた場合は、コンソールwindow.consoleをサポートしていません。開発ツールF12

firefoxで使えますが、問題ありません。

ので、あなたのコード内のエラーを持っていない:

あなたがにconsole.logのため、この操作を行うことができます、Firefoxので

function myConsole(param) { 
    if (window.console && window.console.log) { 
     window.console.log(param); 
    } 
} 
0

、およびES3/ES5を次のいずれかの他のブラウザの戻り値を"_"と呼ばれる関数オブジェクトでなければなりません。

ただし、IE8では、catch文の変数バインディングが関数の先頭に持ち込まれます。例えば、

function fn() { 
    try { 
    return foo; 
    } 
    catch(foo) {} 
} 

が効果的に、これは同じVAR文(実行はVARに達したときに、彼らが作成され、機能の開始時に未定義に設定し、特定の値が割り当てられている

function fn() { 
    var foo; 
    try { 
    return foo; 
    } 
    catch(foo) {} 
} 

注意を行いますステートメント)。