JavaScriptの範囲と範囲のチェーンは、多くの技術文書を読むことができましたが、理解できなかったため、学習の中で最も痛みを伴う部分です。私はそれが何を意味するのかを大まかに知っていましたが、まだ理由を知ることができませんでした。
私の広範なテストと読書技術文書を通して、私は次の理解を要約しました。それはあまり技術的ではありませんが、私はそれを本当に理解することができます。
1. JavaScriptはグローバルおよびローカルにのみ分割されており、これらの背景言語にはさまざまな修飾子がありません。関数でVARを使用しない場合、それはグローバルです。次のように:
<script type = "text/javascript"> varname = "c#"; // global window.name = "java"; // global varlanguage = function(){alert(name); name = "javascript"; // global var name = "js"; // local alert(name); }()alert(name); </script>上記のコードはグローバルにすべてが同じ変数を表し、次の定義は上記を置き換えます。 3つのアラート、すなわちアンダーフィンド、JS、およびJavaScriptについて。これが役割を果たす範囲です。
2。スコープチェーンはレベル0から始まり、順番に下方に配置されます。いわゆる順番の下方は、子供の配置を指します。変数を探すときは、まず同じレベルからそれらを探してから、親レベルを探します。
上記の例では、
最初にポップアップするのは、言語メソッドの最初のアラートです。グローバルウィンドウが0の場合、例の場合、var name = "js"は1です。最初のアラートは1で見つかります。0でそれを探してください。
2番目のポップアップは、言語メソッドの2番目のアラートであり、彼は1つ、つまりメソッドの内側でそれを探します。彼は名前を見つけてJSを割り当てたので、ポップアップはJSです
3番目のポップアップは、下部のアラートです。メソッド内でグローバル名が再割り当てされているため、JavaScriptがポップアップします。
次に、次のリンクを追加します。次のように、言語のメソッドをトップにします。
<scriptType = "text/javascript"> varname = "javascript"; // global window.name = "javascript"; // global varlanguage = function(){alert(name); name = "javascript"; // global varname = "js"; // local alert(name); var lovelanguage = function(){alert(name); }(); }()alert(name); </script>この時点で、LovelanguageのアラートはJSでポップアップします。これは、言語レベルの名前である言語の名前であるためです。 。 。
上記は、編集者からもたらされたJavaScript Scope and Scope Chain(初心者向けの必読)のすべてのコンテンツです。みんなが足跡の家をもっとサポートすることを願っています。