2011-11-04 51 views
0

首先,我认为大多数跟随的代码与问题无关,我只是认为它会更多,呃......确切地说是将整个代码部分。
所以只要看看我标记的第一行,非常感谢。JAVASCRIPT:为什么要在一个内部函数中引用ReferenceError?

window.onload = function() { 

var WebGLSupported = isWebGLSupported(); 
var renderer = WebGLSupported ? new THREE.WebGLRenderer() : new THREE.CanvasRenderer(); 
renderer.setSize(window.innerWidth, 600); 
document.body.appendChild(renderer.domElement); 
var scene = new THREE.Scene(); 
var camera = new THREE.Camera(35,window.innerWidth/600,.1,10000); 
camera.position.set(-5, 5, 25); 
var light = new THREE.PointLight(0xffffff, .4); 
light.position.set(10, 10, 10); 
scene.addLight(light); 
var ambientLight = new THREE.AmbientLight(0xbbbbbb); 
scene.addLight(ambientLight); 
var materialClass = WebGLSupported ? THREE.MeshLambertMaterial : THREE.MeshBasicMaterial; 
var materialWall = new materialClass({ color: 0xffffff, map: THREE.ImageUtils.loadTexture('posts/wholewall.png') }); 
var i; 
var planeWalls=new Array(); 
for (i=1;i<=10;i++){ 
    planeWalls[i]=new THREE.Mesh(new THREE.PlaneGeometry(18,11,1,1), materialWall); 
    planeWalls[i].position.z=i*(-5); 
    scene.addChild(planeWalls[i]); 
} 
camera.lookAt(planeWalls[1].position); 


animate(); 
function animate() { 
    renderer.render(scene, camera); <<-------BREAK AT HERE 
    requestAnimFrame(animate); 
} 

} 

当我在该行, 打破和添加的手表“i”和然后调试器说

Exception: ReferenceError: i is not defined 

然后我添加监视所述阵列的上方“ planeWalls”,和还可以获得的ReferenceError,

但我也补充的“场景”的手表,调试器正确地显示其价值,

所以我不知道为什么,

我的意思是,一个内部函数显然可以使用“我”的变量,对吧?

然后,我添加

alert(i); 
在内部函数的开头

然后调试器显示 “i” 的正确。

那么,这有什么提示吗?

非常感谢。

回答

0

最有可能是调试器问题,如果alert()显示它,意味着它是可访问的。

相关问题