460

JavaScript 変数がクロスブラウザ方式で定義されているかどうかを確認する方法は?

FireBug ログを利用して JavaScript を書いているときに、この問題に遭遇しました。以下のようなコードを書きました。

function profileRun(f) {
    // f: functions to be profiled
    console.profile(f.constructor);
    f();
    console.profileEnd(f.constructor);
}

FireFox/FireBug では正常に動作しますが、IE8 RC1 ではエラーが報告されます。そこで、コンソール変数が実行環境に存在するかどうかを確認したいと思います。

以下のコードは FireFox では正常に動作しますが、IE8 RC1 では動作しません。

function profileRun(f) {
    if (console != undefined) {
        console.profile(f.constructor);
    }

    f();

    if (console != undefined) {
        console.profileEnd(f.constructor);
    }
}

でも、こうすれば。IE8 RC1 で動作します。なんで?

function profileRun(f) {
    if (window.console != undefined) {
        console.profile(f.constructor);
    }

    f();

    if (window.console != undefined) {
        console.profileEnd(f.constructor);
    }
}

それを確認するクロスブラウザの方法はありますか?

4

0 に答える 0