当我专门检查它的存在时,控制台没有定义

时间:2009-10-27 02:54:18

标签: javascript mootools

我正在编写一个快速日志函数来包装本机console.log以防止以后在开发中出现错误(例如代码中遗忘的console.log语句)。我正在使用mootools $defined$type函数在调用之前检查控制台和console.log函数是否存在。但是,当我禁用firebug时,我在firefox中收到以下错误。

  

错误:未定义控制台
  来源档案:http://diagnostic.localhost/js/emp.custom.js
  行:6

EMP.log = function() {
 if (DEBUG && $defined(console) && $type(console.log) == 'function') { //line 6
  var args = Array.prototype.slice.call(arguments); //turn arguments into array
  console.log.pass(args);
 }
}

似乎使用$defined应该消除此错误,所以有人对这个问题有什么想法吗?

我正在使用mootools v1.2.3。

编辑:我尝试了以下内容,他们也给了他们同样的错误:

if (DEBUG && $type(console) == "object" && $type(console.log) == 'function') {

if (DEBUG && $chk(console) && $type(console.log) == 'function') {

1 个答案:

答案 0 :(得分:5)

请尝试使用$defined(window.console)。如果Firefox通过作用域链并且找不到变量,那么它会抛出一个错误,但如果您明确了要查找变量的上下文,它会给你undefined