次の関数を使用します。
function createGlobalVar() {
y = "foo";
}
y //"foo"
ya をローカル変数にするキーワード「var」がない場合、関数はスコープ チェーンを上って、y が存在する場所を見つけようとします。既存の宣言がなければ、y をグローバル変数として作成します。したがって、y が関数の外に存在するために、関数の最後に「return y」を追加する必要はありません。
同じことをしようとしても、関数式を y に割り当ててもうまくいきません。
function createGlobalVar() {
y = function() { alert("foo!") }
}
y //"undefined"
私はそれを修正して機能させる方法を知っています:
function createGlobalVar() {
y = function() { alert("foo!") }
return y;
}
var x = createGlobalVar();
x // function() { alert("foo!") }
しかし、関数式が割り当てられたという理由だけでグローバル変数を返さなければならない理由がわかりません。何が違うの?