簡體   English   中英

未捕獲的類型錯誤:未定義不是函數

[英]Uncaught TypeError: undefined is not a function

大家好,我目前是一名學生,正在從事我書中的一個項目,這是我遇到問題的代碼。

for (var i = 0; i < numAsteroids; i++) {
    var radius = 5+(Math.random()*10);
    var x = canvasWidth+radius+Math.floor(Math.random()*canvasWidth);
    var y = Math.floor(Math.random()*canvasHeight);
    var vX = -5-(Math.random()*5);
    
    asteroids.push(new Asteroid(x, y, radius, vX));***<---line 21***
};

現在,當我運行時,它一直告訴我我有一個:

Uncaught TypeError: undefined is not a function line 21.

但是我有我書中的代碼,這是我不明白的。 如果有人能幫我解決這個問題,那就太好了!

如果由於.push()方法而導致錯誤來自這一行:

asteroids.push(new Asteroid(x, y, radius, vX));

然后,問題是asteroids尚未初始化為數組,因此它沒有方法.push()

您可以像這樣初始化它:

var asteroids = [];
for (var i = 0; i < numAsteroids; i++) {
    var radius = 5+(Math.random()*10);
    var x = canvasWidth+radius+Math.floor(Math.random()*canvasWidth);
    var y = Math.floor(Math.random()*canvasHeight);
    var vX = -5-(Math.random()*5);

    asteroids.push(new Asteroid(x, y, radius, vX));
}

如果未定義Asteroid構造函數,也可能會出現此類錯誤。

是否定義了Asteroid函數?

以下作品。

var asteroids = [],
    numAsteroids = 10,
    canvasWidth = 10,
    canvasHeight = 10,
    radius = 10;
for (var i = 0; i < numAsteroids; i++) {
    var radius = 5+(Math.random()*10);
    var x = canvasWidth+radius+Math.floor(Math.random()*canvasWidth);
    var y = Math.floor(Math.random()*canvasHeight);
    var vX = -5-(Math.random()*5);

    asteroids.push(new Asteroid(x, y, radius, vX));
};

// Is the Asteroid function/class defined?
function Asteroid(x, y, r, vX) {

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM