在我的案例中获得第一个更新值的有效方法是什么?

时间:2011-04-11 12:25:32

标签: javascript javascript-events

我有以下js代码段,

var myloop=function(element){
  ...
  var myValue;

  element.onClick(){
      //GET the first value of variable "myValue"
  };
};
myloop.start();

myloop启动时,myloop功能的正文将执行 serverl次本地变量 myValue将会执行每次myloop运行时都会更新。

myloop内部,我有一个事件处理程序 element.onClick(),此事件处理程序只对局部变量的第一次更新值感兴趣myValue

我想问一些最有效的方式的建议,以便在处理程序中获得第一次更新的“myValue”值。

我的实现是定义一个index和一个Arraymyloop函数,并将所有更新的值存储在数组中,然后在处理程序中,我得到第一个元素数组是“myValue”的第一个更新值。但我不认为这是有效的,因为数组中的其余更新值是无用的。

所以,任何人都可以提供一些其他建议来在处理程序中获取myValue的第一个更新值。

1 个答案:

答案 0 :(得分:1)

myValuemyLoop的范围内定义,当您在元素的onclick内时,您将引用该变量的内存空间,而不是副本。

因此,您需要创建一个新范围来保留该引用。这不会创建副本,但由于此范围不会使用新值更新,因此它仍将引用旧值。

根据@ andy-e回答JavaScript for loop index strangeness

var myloop=function(element){
    ...
    var myValue;

    (function (myValue) {
        element.onclick = function () {
            //GET the first value of variable "myValue"
        }
    })(myValue);
}

这是,恕我直言,解决这个问题的“正确”方法。也许更有效的方法是声明一个名为firstValue的全局变量,当你设置myValue时(如果更改它是一个公共属性,你可以创建一个setter),检查firstValue是null。在这种情况下,无论如何都要替换值,不要做任何事情。

祝你好运!