仅在函数上缓存变量

时间:2014-05-30 05:16:20

标签: javascript

有没有办法为一组函数中的函数缓存全局变量,而不直接从另一个函数调用该函数?

例如,如果我有一组包含在父函数中的函数,如下所示:

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.
   });

}

全局变量在开始时声明,它在第一个函数中被赋予一个值,该值将延伸到第二个函数以供使用。

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

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

2 个答案:

答案 0 :(得分:1)

您可以在第一个函数中仅设置一次变量:

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

或者,您可以应用任何您想要的逻辑。有时,在半全局中保存这样的状态以便稍后在不同的事件处理程序中使用是一个警告信号,表明您可能存在设计问题。如果您解释更多关于您真正想做的事情,我们可以就是否有更好的方法解决您的设计问题提出意见。

答案 1 :(得分:1)

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

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
    });

}