javascript检查变量是否存在(已定义/初始化)

JavaScript check if variable exists (is defined/initialized)

本问题已经有最佳答案,请猛点这里访问。

如何检查跨浏览器定义的javascript变量?

我在使用Firebug日志编写一些JavaScript时遇到了这个问题。我写了如下代码:

1
2
3
4
5
6
function profileRun(f) {
    // f: functions to be profiled
    console.profile(f.constructor);
    f();
    console.profileEnd(f.constructor);
}

它在firefox/firebug中运行良好,但在ie8 rc1中报告错误。所以,我想做一些检查控制台变量是否存在于执行环境中。

下面的代码在Firefox中可以正常工作,但在IE8RC1中不行。

1
2
3
4
5
6
7
8
9
10
11
function profileRun(f) {
    if (console != undefined) {
        console.profile(f.constructor);
    }

    f();

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

但是,如果我这样做的话。它在IE8 RC1中工作。为什么?

1
2
3
4
5
6
7
8
9
10
11
function profileRun(f) {
    if (window.console != undefined) {
        console.profile(f.constructor);
    }

    f();

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

有没有跨浏览器的方式来检查它?