0

次の関数を使用します。

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!") }

しかし、関数式が割り当てられたという理由だけでグローバル変数を返さなければならない理由がわかりません。何が違うの?

4

1 に答える 1