Javascript 在函数上以独占方式缓存变量

Javascript 在函数上以独占方式缓存变量,javascript,Javascript,有没有一种方法可以在一组函数中缓存函数的全局变量,而不直接从另一个函数调用该函数 例如,如果我将一组函数包装在父函数中,如下所示: function parentFunction() { var myVariable; someDiv.addEventListener('click', function (e) { myVariable = e.target; }); anotherDiv.addEventListener('click', function (e)

有没有一种方法可以在一组函数中缓存函数的全局变量,而不直接从另一个函数调用该函数

例如,如果我将一组函数包装在父函数中,如下所示:

function parentFunction() {
var myVariable;

   someDiv.addEventListener('click', function (e) {
   myVariable = e.target;
   });

   anotherDiv.addEventListener('click', function (e) {
     // use myVariable without it changing when the above is fired again.
   });

}
全局变量在开始时声明,在第一个函数中给它一个值,该值将传递到第二个函数以供使用

但是,如果第一个函数再次启动,如何阻止它在第二个函数中不断更新


我是否可以在第二个函数中添加另一个事件侦听器,以检查第一个函数是否再次激发并确保变量不会更改?

您只能在第一个函数中设置变量一次:

someDiv.addEventListener('click', function (e) {
    if (!clickedLink) {
        clickedLink = e.target;
    }
});

或者,你可以在那里应用任何你想要的逻辑。有时,将这样的状态保存在半全局中以供以后在其他事件处理程序中使用是一个警告标志,表明您可能存在设计问题。如果您能详细解释一下您真正想做的事情,我们可以就是否有更好的方法来解决您的设计问题提供意见。

不确定我是否完全理解这个问题。如果希望有两个不同的绑定,则需要两个变量。也许是这样:

function parentFunction() {
    var myVariable, anotherVariable;

    someDiv.addEventListener('click', function (e) {
        myVariable = e.target;
        if (!anotherVariable) {
            anotherVariable = e.target;
        }
    });

    anotherDiv.addEventListener('click', function (e) {
      // use anotherVariable
    });

}

你是说
myVariable
=
clickedLink
?哦,是的,对不起,谢谢你这么做啊,我明白了,你只是更改了变量!