2011-11-04 185 views
0
windows.onload=function(){ 
    ...somecode... 
    var scene = new THREE.Scene(); 
    ...somecode... 
    var i; 
    var j; 
    for (i=......){...} 
    func2(); 
    function func2(){ 
     ...somecode... 
     BREAK AT THIS LINE; 
    } 
} 

,当我在该行突破,
萤火说,“我”和“J”是不确定的,但内部功能显然能获得的“我”的价值吗?
但奇怪的是,“场景”显示正确。
铬的Ctrl + Shift + I显示同样的事情。变量嵌套函数“未定义”

但事情更奇怪的是, 当我添加

alert(i); 

到FUNC2的开始,
这个时候, 的MSGBOX告诉我正确的值,
萤火显示的值我正确地,
但j仍然显示未定义。

我不知道为什么,
萤火虫都和铬显示了同样的事情,所以不是萤火虫的一个bug,
那么有没有这方面的任何提示?

非常感谢。

+2

在你显示的代码中,你不要在任何点设置'j',所以它会是'undefined' ... –

+0

但是为什么我第一次未定义,但场景可以正确显示? –

+1

诊断数据不足,请充实你的例子。 – James

回答

0

i的值应该在内部函数中可用。这在Firebug和node.js中打印“2”预期:

(function() { 
    for (var i=0; i<2; ++i) {}; 
    (function() { console.log(i) })(); 
})(); 

那么,这只是一个显示不正确的值的调试器的事?

0
function func2(){ 
    BREAK HERE; 
    ... 
    for (var i = ... 
    for (var j = ... 
} 

如果你有这样的则那些var语句被提升到函数声明的顶部,这样它实际上看起来像

function func2() { 
    var i, j; 
    BREAK HERE: 
    ... 
    for (i = ... 
    for (j = ... 
} 

其他然后,代码,没有理由为ij未定义