JavaScript: глобальная переменная перезаписана - PullRequest
0 голосов
/ 28 апреля 2020

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

var markerPos;
var markerAlreadyDetected = false;

AFRAME.registerComponent('barcode_marker', {
    init: function () {
        const marker = document.querySelector('#marker');

        marker.addEventListener('markerFound', function () {
            console.log("Marker Already Detected:", markerAlreadyDetected);

            if (!markerAlreadyDetected) {
                markerAlreadyDetected = true;
                markerPos = marker.getAttribute('position');
                console.log("Saved new marker location.", markerPos);
            } else {
                console.log("Already detected marker.");
            }

            console.log("Saved marker position:", markerPos);
        });
    }
});

Даже если if(!markerAlreadyDetected) работает правильно, глобальная переменная, кажется, меняется каждый раз, маркер обнаруживается.

Вот некоторая консоль выход .

1 Ответ

0 голосов
/ 28 апреля 2020

Это сообщение было изначально опубликовано VLAZ в качестве комментария.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...