【问题标题】:Why does the global var debug get evaluated to [object Object]为什么全局 var 调试被评估为 [object Object]
【发布时间】:2011-07-21 15:57:59
【问题描述】:

为什么全局 var debug 被评估为 [object Object] 而不是 1?考虑这段代码:

var debug = 1;
function hum(mess) {
    alert('hum alert debug == ' + debug);
    console.log('hum console.log debug == ' + debug);
    if (debug == 1) {
        console.error('hum mess == ' + mess);
    } else {
        console.error('hum debug != 1 mess == ' + mess);
    }
}

当我的代码第一次运行时,eval 是正确的,所以我的警报说“debug==1”但后来(可能在 phonegap 完成加载之后)它开始给我 debug==[object Object]。我正在使用 xcode 和 iphone 模拟器使用 phonegap for ios 进行开发。

谢谢

【问题讨论】:

  • 因为字符串转换的工作方式。基本上 js 类型是一个失误。还有alert很傻,别用了。
  • 可能是您的代码和您使用的库之间存在冲突?他们也可以使用一个名为 debug 的变量,但将其设置为一个对象。
  • 看起来debug 正在被其他代码替换。使用DEBUG 看看是否还会发生同样的事情。

标签: javascript ios object cordova evaluation


【解决方案1】:

看起来您已将 debug 声明为全局变量,并且它可能会被稍后加载/执行的其他代码重新分配。尝试更改变量名称或使其不是全局变量。

【讨论】:

  • 是的,就是这样,我猜调试正在phonegap中的某个地方重新分配。想到这一点,但似乎一厢情愿的想法会如此简单。谢谢。
【解决方案2】:

稍后在您的代码中,您正在使用的平台将 debug 的值更改为一个对象。 将变量名从 debug 更改为 smthing nt,就像 new_debug 一样明显

【讨论】:

    【解决方案3】:

    您的调试变量被 phonegap 替换,这会创建一个调试对象,请参阅:

    http://www.daveoncode.com/2010/01/12/debugging-phonegap-applications-using-xcode-console/

    从那里摘录: 幸运的是,PhoneGap 提供了一种访问 Xcode 控制台并通过在三个不同级别中进行选择来打印消息的方法:日志、警告和错误。为了打印消息,我们必须使用 debug 对象,它具有范围窗口(它是一个全局对象),这样:

    【讨论】:

      猜你喜欢
      • 2016-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 2013-10-20
      • 2011-07-13
      • 2014-08-21
      • 1970-01-01
      相关资源
      最近更新 更多