为什么全局var debug被评估为[object Object]

时间:2011-07-21 15:58:00

标签: javascript ios object cordova evaluation

为什么全局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模拟器为ios开发使用phonegap。

感谢

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

稍后在您的代码中,您正在处理的平台会将debug的值更改为对象。 将变量名称从debug改为smthing nt,就像new_debug

那样明显

答案 2 :(得分:0)

您的调试变量被phonegap取代,后者会创建调试对象,请参阅:

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

来自那里的片段: 幸运的是,PhoneGap提供了一种访问Xcode控制台和打印消息的方法,可以选择三个不同的级别:日志,警告和错误。为了打印消息,我们必须以这种方式使用调试对象,它具有作用域窗口(它是一个全局对象)