2011-11-04 79 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()顯示它,意味着它是可訪問的。

相關問題