假設我在ready函數中聲明瞭一個名爲foo
的變量。通常情況下,當函數結束時,本地聲明的變量會被刪除嗎?如何正確存儲變量而不將其全局存儲?
我想在事件監聽器#someid
中使用這個變量。我試過這個,當#someid
發生點擊事件時,仍然可以訪問foo
變量。
當ready函數結束時,爲什麼這個變量不被破壞,仍然可以訪問?聲明一個變量並以這種方式使用它是否安全?我不想全局聲明變量,因爲我沒有。
編輯: 這些事件監聽器及其變量存儲在哪裏?
這裏是我的JS:
$(document).ready(function() {
var foo = 0;
//random event listener
$('#someId').on('click', function() { foo++; }); //increment foo
});
相關:[JavaScript閉包如何工作?](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work) –
'foo'在'$的本地'範圍內(document).ready'是'click-handler'的父範圍 'function'的'outer-scope'中的變量可以在'function'中訪問 – Rayon
歡迎來到SO!此外,您提供的代碼中沒有全局變量。 – evolutionxbox