同じスコープ内の異なるスコープからの同じ名前の2つの異なる変数を使用することはできません。したがって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);
});