なぜこの結果、私は)(_ _、定義された関数fnとしてのFFの出力でIE、FF try {} catch(){}バグ?
function _(){};
function fn(){
try{
console.info(_);
}catch(_){
//
}
return _;
}
fn();
を関数名を定義しますが、IE8の出力は不定?元のバージョンに疑問を更新する
なぜこの結果、私は)(_ _、定義された関数fnとしてのFFの出力でIE、FF try {} catch(){}バグ?
function _(){};
function fn(){
try{
console.info(_);
}catch(_){
//
}
return _;
}
fn();
を関数名を定義しますが、IE8の出力は不定?元のバージョンに疑問を更新する
EDIT @kevinpengのおかげ
IE7は(私はそれを持っていないとして、私はテストすることはできません)
IE8はそれをサポートしていますあなたが開いた場合は、コンソールwindow.consoleをサポートしていません。開発ツールF12
firefoxで使えますが、問題ありません。
ので、あなたのコード内のエラーを持っていない:
あなたがにconsole.logのため、この操作を行うことができます、Firefoxので
function myConsole(param) {
if (window.console && window.console.log) {
window.console.log(param);
}
}
、およびES3/ES5を次のいずれかの他のブラウザの戻り値を"_"と呼ばれる関数オブジェクトでなければなりません。
ただし、IE8では、catch文の変数バインディングが関数の先頭に持ち込まれます。例えば、
function fn() {
try {
return foo;
}
catch(foo) {}
}
が効果的に、これは同じVAR文(実行はVARに達したときに、彼らが作成され、機能の開始時に未定義に設定し、特定の値が割り当てられている
function fn() {
var foo;
try {
return foo;
}
catch(foo) {}
}
注意を行いますステートメント)。