您不能在同一范围内使用来自不同范围的两个具有相同名称的不同变量。因此,当您global_var
使用var
关键字声明本地时,您的全局变得不可访问。
如果您需要创建一个与全局同名的局部变量,您可以使用如下闭包:
jQuery(document).ready(function($){
(function(global_var){
// global_var is a local copy of global_var from the outer scope
global_var = typeof global_var == 'undefined' ? {foo:2} : global_var;
console.log(global_var);
})(global_var);
});
window
如果您知道它是全局的,您也可以将其称为对象的属性:
jQuery(document).ready(function($){
var global_var = typeof window.global_var == 'undefined' ?
{foo:2} : window.global_var;
console.log(global_var);
});
最后,如果您不想要本地副本而只想从外部范围访问变量,则不要使用var
关键字,因为该关键字的目的是声明一个新变量:
jQuery(document).ready(function($){
global_var = typeof global_var == 'undefined' ? {foo:2} : global_var;
console.log(global_var);
});