簡體   English   中英

在我的情況下,獲得第一個更新值的有效方法是什么?

[英]What's the efficient way to get the first updated value in my case?

我有以下js代碼段,

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

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

myloop啟動時, myloop函數的主體將被執行一次,並且每次myloop運行時都會更新局部變量 myValue

myloop函數中,我有一個事件處理程序 element.onClick() ,此事件處理程序僅對局部變量myValue第一個更新值 myValue

我想提出一些最有效方法的建議,以獲取處理程序中的“ myValue”第一個更新值

我的實現是在myloop函數外部定義一個index和一個Array ,並將所有更新的值存儲在數組內,然后在處理程序中,我從數組中獲得第一個元素,即“ myValue”的第一個更新值。 但是我不是這樣,因為數組中其余的更新值沒有用。

因此,任何人都可以提出其他建議以獲取處理程序中myValue的第一個更新值。

myValue是范圍界定myLoop ,當你在里面元素onclick ,你會被引用在變量,而不是一個副本的內存空間。

因此,您需要創建一個新的作用域以保留該引用。 這不會創建一個副本,但是由於該范圍不會使用新值進行更新,因此它仍將引用舊副本。

基於對JavaScript的 @ andy-e答案, 了解循環索引的奇怪之處

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

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

恕我直言,這是解決該問題的“正確”方法。 也許更有效的方法是聲明一個名為firstValue類的全局變量,並在設置myValue時設置(如果更改,則可以使用setter作為公共屬性),請檢查firstValue是否為null 在這種情況下,無論哪種方式都可以替換該值,而無需執行任何操作。

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM