Javascript 嵌套函数中的变量“未定义”
当我突破那条线时, firebug说,i和j是未定义的,但是一个内部函数显然可以得到i的值,对吗? 但奇怪的是,这个场景显示得很正确。 chrome的Ctrl+Shift+I显示相同的内容 但更奇怪的是, 当我加上Javascript 嵌套函数中的变量“未定义”,javascript,Javascript,当我突破那条线时, firebug说,i和j是未定义的,但是一个内部函数显然可以得到i的值,对吗? 但奇怪的是,这个场景显示得很正确。 chrome的Ctrl+Shift+I显示相同的内容 但更奇怪的是, 当我加上 windows.onload=function(){ ...somecode... var scene = new THREE.Scene(); ...somecode... var i; var j; for (i=......){.
windows.onload=function(){
...somecode...
var scene = new THREE.Scene();
...somecode...
var i;
var j;
for (i=......){...}
func2();
function func2(){
...somecode...
BREAK AT THIS LINE;
}
}
到第二章的开头,
这一次,,
msgBox正确地告诉i的值,
firebug正确显示i的值,
但是j仍然是未定义的
我想知道为什么,
Firebug和chrome都显示了相同的东西,所以它似乎不是Firebug的bug,
那么有什么提示吗
非常感谢。我的值应该在内部函数中可用。这将按预期在Firebug和node.js中打印2:
alert(i);
那么,这只是调试器显示错误值的问题吗
(function() {
for (var i=0; i<2; ++i) {};
(function() { console.log(i) })();
})();
如果您有这样的代码,那么这些var语句将被提升到函数声明的顶部,因此实际上看起来
function func2(){
BREAK HERE;
...
for (var i = ...
for (var j = ...
}
除此之外,在你展示的代码中,没有理由不定义i和j你没有在任何点设置j,因此它将是不定义的…但是为什么我第一次未定义,但场景可以正确显示?没有足够的数据进行诊断,请充实你的示例。
function func2() {
var i, j;
BREAK HERE:
...
for (i = ...
for (j = ...
}