我有以下代码
$('#first').click(function() {
myVar = $(this).next().val();
});
$('#second').blur(function() {
console.log(myVar);
});
Run Code Online (Sandbox Code Playgroud)
如何在#second中访问myVar?
这取决于代码的更广泛的上下文.你可以这样做:
(function() {
var myVar;
$('#first').click(function() {
myVar = $(this).next().val();
});
$('#second').blur(function() {
console.log(myVar);
});
})();
Run Code Online (Sandbox Code Playgroud)
这会创建一个匿名函数并立即调用它.匿名函数的目的是为提供一个容器myVar ,而不使myVar全局变量.通常最好避免全局变量(尤其是因为它们成为window对象的属性,已经有各种各样的垃圾卡在其上).具体来说,您分配给您click和blur事件的函数将成为对匿名函数调用内数据的闭包.他们可以访问myVar,但没有别的.更多这里.
如果您的代码已经在包含范围内,或者您不关心添加到全局命名空间,则不需要匿名函数.