2011-11-04 142 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未定義