TypeError:x未定义 - JS

时间:2016-10-01 18:10:35

标签: javascript

我在使用webgl应用。我有starsList数组,出于某种原因,当我运行此函数时:

function initTextures() {

        for (i = 0; i < starsList.length; i++) {
            starsList[i].texture = gl.createTexture();
            starsList[i].texture.image = new Image();
            starsList[i].texture.image.onload = function () {
                handleLoadedTexture(starsList[i].texture)
            }
            starsList[i].texture.image.src = starsList[i].name + ".gif"; 
        }   
    }

我收到了这个错误:

TypeError: starsList[i] is undefined
handleLoadedTexture(starsList[i].texture)

尽管在循环的第一行定义了starsList[i].texture 任何想法为什么?

1 个答案:

答案 0 :(得分:0)

当您调用onload回调时,i等于starsList.length

所以starsList[starsList.length]未定义。

宣布回调时 starsList[i].texture.image.onload = function () { handleLoadedTexture(starsList[i].texture) } 它不会复制starsList的某些特定值。它只会在调用时尝试查找范围内的所有变量。

对于解决方案,您可以绑定每个onload回调以使用特定的i