如何正确存储变量而不在全局存储它们?

Ben*_*tep 1 javascript jquery

假设我声明了fooready函数中调用的变量.通常,当函数结束时,会删除本地声明的变量吗?

我想在事件监听器中使用这个变量#someid.我试过这个,foo当发生点击事件时,仍然可以访问该变量#someid.

当ready函数结束时,为什么这个变量不会被破坏并且仍然可以访问?声明变量并以这种方式使用它是否安全?我不想全局声明变量,因为我没有.

编辑:这些事件监听器及其变量存储在哪里?

这是我的js:

$(document).ready(function() {
var foo = 0;

//random event listener
$('#someId').on('click', function() { foo++; }); //increment foo

});
Run Code Online (Sandbox Code Playgroud)

Jam*_*iec 5

我想在'#someid'的事件监听器中使用这个变量.我试过这个,当'#someid'上发生点击事件时,仍然可以访问foo变量.

这是正确的,您的变量foo仍然在范围内,因此可以访问.

为什么这个变量不会被破坏并且仍可访问?

因为两者都在就绪功能的范围内.

我不想全局声明变量.

你没有,所以不要担心.您已声明一个变量,该变量是就绪函数的本地变量,而不是全局变量.