I was using console.log()
in some JavaScript I wrote and an error of: console is not defined
was thrown in Internet Explorer (worked fine in other browsers).
I have replaced it with:
if (console) console.log("...");
If console
is undefined
, I would expect the condition to evaluate as false
. Ergo, the statement console.log
wouldn't be executed and shouldn't throw an error.
Instead, an error of: console is not defined at character 4
is thrown.
Is this a IE bug? Or is that "if" condition really illegal? It seems absurd because if if (console)
is illegal, then if (console==undefined)
should be illegal too.
How are you supposed to check for undefined
variables?
Other answers gave you the root cause.
However, there's a better solution than using if
before any call to console.*
Add this (once) before including any of your scripts that use console:
//Ensures there will be no 'console is undefined' errors
window.console = window.console || (function(){
var c = {}; c.log = c.warn = c.debug = c.info = c.error = c.time = c.dir = c.profile = c.clear = c.exception = c.trace = c.assert = function(s){};
return c;
})();
This will create a 'pseudo' console only if it doesn't exist, so that 'console is undefined' errors will go away and you won't have to ask if console exists everytime.
With this, you just call console.log
or any console method anywhere, without problems.
Hope this helps. Cheers