我有一個函數 - 我們將其定義爲function getdata(after){}
,它將after
參數作爲一個函數。很自然。此功能是從能在其範圍定義了一些變量的一些其他功能運行:javascript函數作爲參數和作用域變量
$('.button').click(function(){
var rel = $(this).attr('rel');
var mooo = $(this).parent().offset().left;
getdata(function(){alert(rel);console.log(moo)});
});
我如何通過這些變量正確的方法,所以這真的是同一件事,因爲它是點擊該按鈕時?它不能是全局變量,因爲用戶可以點擊垃圾郵件按鈕,並且它應該保持變量在點擊過程中的準確位置,即使當函數在10分鐘後以隨機順序被調用時也是如此,因爲正如名稱所說 - 正在稱爲AFTER ajax請求。
這只是一個例子 - 這個想法是這個after
函數也是可變的,從完全不同的地方調用。
好,我知道-1
,因爲目前還不清楚我要求的,所以我試圖解釋這一問題。我真的不明白什麼時候變量作爲變量傳遞,何時作爲變量的指針傳遞,變量的指針可能會在它傳遞給它的函數使用之前發生變化。
當我在一個函數中定義變量並將其傳遞給另一個函數時,它是一個指針還是一個獨立變量?當我再次調用原點函數時,這些變量將會改變 - 它會影響之前「調度」的函數嗎?或者變量之前的單詞var意味着 - 將其定義爲完全新鮮的變量,並且每次調用var的函數時,它都會將該變量作爲全新的變量分配給內存,這是發生任何事情的最後一個變量?
我通常是一個PHP,C和Delphi編程人員,對於我來說,瞭解這些變量作用域的工作原理有點困難,特別是當所有事情都是異步和回調時。
除非發送到該函數的參數是一個對象,它將傳遞它的值而不是它的引用。當你發送一個字符串('$(this).attr('rel')'屬性)和一個整數('$(this).offset()。left')時,你不需要擔心getdata可能會延遲調用回調。打印回調中的變量將包含按鈕被點擊時的值。 –
如何確定它是作爲字符串還是對象傳遞的? '$(this).offset()'是一個對象,'$(this).offset()。left'是獨立的字符串?如果我想傳遞'$(this)'sender對象,以便能夠在函數完成後更改對象呢? –
@FlashThunder查看我更新的答案。我不建議你使用它,但它可以讓你洞察變量範圍和JS的動態特性。 –