переменная JavaScript не определена, несмотря на то, что она была определена - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь получить положение мыши на холсте HTML5 с помощью этой функции:

function getMousePos(canvas, evt) {
    var rect = canvas.getBoundingClientRect();
    return {
        x: evt.clientX - rect.left,
        y: evt.clientY - rect.top
    };
}

Функция вызывается через прослушиватель событий (прослушивание события mousemove), прикрепленный к объекту DOM окна.

Я объявил начальные значения mousePos как 0,0 в объекте следующим образом:

var engine = {
    canvas: document.getElementById('main'),
    mousePos: {x:0,y:0},
    ...
}

Всякий раз, когда я перемещаю мышь за пределы холста и перезагружаю страницу, консоль сообщает:

Uncaught ReferenceError: mousePos is not defined

Поскольку событие window.mousemove еще не сработало, переменная не определена. Но мне кажется, что прежде чем я впервые использую переменную, она определена правильно. Несмотря на это, почему я до сих пор получаю эту ошибку?

Остальная часть моего кода (включая HTML): https://pastebin.com/03FZ2Q3L

Заранее спасибо.

1 Ответ

0 голосов
/ 05 ноября 2018

В моем коде были места, где я забыл ссылаться на переменные mousePos как engine.mousePos, потому что я забыл, что они были размещены внутри объекта engine.

Пример:

if(typeof mousePos.x !== undefined){ ... }

должно быть

if(typeof engine.mousePos.x !== undefined){ ... }

Спасибо всем за помощь

...