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”是未定义的,但内部函数显然可以得到“i”的值吗?
但很奇怪,“场景”是正确显示的
Chrome的Ctrl + Shift + I显示相同的内容。
但更奇怪的是, 当我添加
alert(i);
到func2的开头,
这次,
msgBox正确地告诉我的值,
firebug正确显示i的值,
但是j仍然显示未定义。
我想知道为什么,
Firebug和chrome都显示相同的东西,所以它似乎不是Firebug的一个bug,
那有什么提示吗?
非常感谢。
答案 0 :(得分:0)
i的值应该在内部函数中可用。这会在Firebug和node.js中按预期打印“2”:
(function() {
for (var i=0; i<2; ++i) {};
(function() { console.log(i) })();
})();
这只是调试器显示错误值的问题吗?
答案 1 :(得分:0)
function func2(){
BREAK HERE;
...
for (var i = ...
for (var j = ...
}
如果你有这样的代码,那么这些var
语句会被提升到函数声明的顶部,所以它实际上看起来像
function func2() {
var i, j;
BREAK HERE:
...
for (i = ...
for (j = ...
}
除此之外,没有理由i
和j
未定义