javascript - js変数のスコープの問題
代言
代言 2017-06-12 09:28:08
0
2
746
  • js モジュラー記述を学習する際に生じる疑問、コードは次のとおりです。

リーリー

module1.m2()count にアクセスできない理由を知りたいです。

代言
代言

全員に返信(2)
代言

ヒント: m1 が count にアクセスできる理由は、m1 と count が同じ関数内で宣言されている、つまり同じスコープ内にあるためですが、m2 が配置されている関数は count Under と同じ関数内にないからです。スコープ内では、関数内に埋め込まれた関数間には関連性がないので、当然アクセスできません。

質問者は module1 自体が count と同じ関数の下にあると考えているので、module1 にメソッドを追加します。このメソッドは count と同じスコープの下にありますか?

いいねを押す +0
typecho

字句スコープのため、JS 関数は静的スコープを持ちます。つまり、関数が定義されるときに、内部で m1 を定義すると、匿名関数がカウントを返します。定義されると、この関数の外部にあると判断されますvar count=0

m2 を定義すると、無名関数はカウントを返します。このカウントのシンボル検索は、まずそれが定義されている場所内にあるかどうかを確認し、存在しない場合は上位層関数が定義されている場所を確認します。次に、最も外側の場所です。これはグローバル変数なので、ここでのカウントはグローバル変数です。

そのため、module1.m2() は m1 で定義した count 変数にアクセスできません。静的字句スコープのため、m2 はそれを追跡できません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート