首页 > 解决方案 > JavaScript:全局变量似乎被覆盖

问题描述

我目前正在处理以下代码,它应该只保存第一个位置。之后检测到的任何内容都应忽略:

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)正确执行,全局变量似乎每次都在变化,标记被检测到。

这是一些控制台输出

标签: javascriptglobal-variablesaframevar

解决方案


这篇文章最初是由VLAZ作为评论发布的。

您正在分配一个对象,这意味着它可以自由更改而无需您重新分配它。如果您需要维护对象的具体状态,则需要对其进行克隆或仅从中获取所需的原始值。


推荐阅读