怎么可能`if(console == undefined)`break js执行?

Lar*_*bar 3 javascript console

当我编辑生产代码(小修复)时,我想添加console.log例如,但不要为没有firebug或不使用chrome的用户打破页面我决定重新定义控制台对象:

if (console == undefined) {
    console = {
        log     : function(){},
        info    : function(){},
        warn    : function(){},
        error   : function(){}
    };
};
Run Code Online (Sandbox Code Playgroud)

插入此代码后,JS-execution在没有控制台对象的浏览器中被破坏(IE,没有firebug的Firefox等).("破碎"我的意思是这些行之后的代码根本不执行)为什么会发生?

Ray*_*nos 9

(console == undefined)

将抛出一个ReferenceErrorif控制台未定义.

使用typeof而不是ReferenceErrors为未声明的变量抛出

(typeof console === "undefined")


Set*_*eth 5

试试这个:

if ( window.console === undefined ) {

    window.console = {
        // Your methods
    }

}
Run Code Online (Sandbox Code Playgroud)