1. 範囲簡単に言えば、スコープとは、変数が定義されているプログラム内の領域を指し、現在実行されているコードの変数へのアクセス権を決定します。 ES5 では、一般的にスコープ タイプは次の 2 つだけです。
概念について説明した後、次のコードを見てみましょう。 変数a = 100 関数テスト(){ var b = a * 2 変数a = 200 変数 c = a/2 コンソールログ(b) コンソール.log(c) } test() // ここで何が印刷されるでしょうか? 分析:
つまりNaN、100が出力される。 ES6では、新しいブロックスコープが追加されました 簡単に言えば、中括弧 // ES5 真の場合{ var name = '南九' } console.log(name) // ナンジュウ // ES6 真の場合{ 年齢を18とする } console.log(age) // エラーが報告されます 2. スコープチェーン実行可能コード内の変数にアクセスする場合、まずその変数が現在のスコープ内に存在するかどうかを確認します。存在する場合は、すぐに戻ります。存在しない場合は、親スコープ内を検索し、グローバル スコープが見つかるまで検索を続けます。このスコープ ネスト メカニズムを 3. 語彙の範囲
いわゆるレキシカルスコープは、コードを書くときに変数とスコープをどこに記述するかによって決まります。つまり、レキシカルスコープは静的スコープであり、コードを書くときに決定されます。関数のスコープは、実際に呼び出される場所ではなく、宣言される場所によって決まります。 MDN ではクロージャを次のように定義しています。 関数は、その周囲 (語彙環境) への参照とバンドルされます (または、関数は参照に囲まれています)。このような組み合わせは、 つまり、クロージャを使用すると、内部関数内から外部関数のスコープにアクセスできるようになります。 次のように結論付けることができます。
まずはコードを見てみましょう: var name = 'フロントエンドNanjiu' 関数 say() { console.log(名前) } 言う() 分析: 「Javascript Definitive Guide」という本に次のような一文があります。厳密に言えば、すべての しかし、これは単なる理論的な閉鎖であり、私たちが通常使用するものとは異なります。上記の例は単なる単純なクロージャです。 ECMAScript ではクロージャを次のように定義します。
JavaScript Definitive Guide の別のコードを見てみましょう。 スコープを「グローバルスコープ」にする 関数チェックスコープ(){ スコープを 'ローカルスコープ' にします 関数f(){ 戻りスコープ } 戻り値 f } s = checkscope() とします。 s() // これは何を返しますか? 多くの学生はそれが
スコープの基本ルール: 5. 閉鎖の適用
6. クロージャの欠陥
7. 閉会面接でよくある質問var arr = [] (var i=0;i<3;i++){ arr[i] = 関数(){ コンソールログ(i) } } arr[0]() // 3 arr[1]() // 3 arr[2]() // 3 // ここで、実行中に i は 3 になりました // クロージャを使用して解決する var arr = [] (var i=0;i<3;i++){ arr[i] = (関数(i){ 関数()を返す{ コンソールログ(i) } })(私) } arr[0]() // 0 arr[1]() // 1 arr[2]() // 2 Javascript のスコープとクロージャの詳細に関するこの記事はこれで終わりです。Javascript のスコープとクロージャの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Docker stopはすべてのコンテナを停止/削除します
質問会社がサーバーを移行した後、デフォルトで作成された docker0 ブリッジが会社の外部ネットワ...
HTML に触れる初心者は、いくつかの HTML タグを学びます。関連記事:初心者が学ぶ HTML...
水平方向では、テーブル ヘッダーの配置を左、中央、右に設定できます。基本的な構文<TH ALI...
MySQL の運用と保守において、R&D の同僚が 2 つの異なるインスタンスのデータを比較...
Mac 最新バージョンの MySQL 8.0.22 パスワード回復問題の説明:昨日、突然、Macで最...
目次1. コンテナサービスの更新とDockerコンサルの検出1. サービス登録と検出とは何ですか? ...
問題の説明1. 収集ステーションのデータベース2. データが無い状態での移動は問題ありませんが、デー...
AES暗号化の使用データ転送の暗号化と復号化処理 --- AES.js最初のステップ: vue に ...
この記事では、マルチカラムレイアウトドラッグを実装するためのVueの具体的なコードを参考までに共有し...
概要通常、データベース内のデータを直接表示することは望ましくないため、最後の 2 つのセクションでは...
まず関数の自己呼び出しを知る必要がある関数の自己呼び出し - 自己呼び出し関数1 回限りの関数 - ...
債券とは何かNIC ボンドは、実稼働シナリオでよく使用されるテクノロジーです。複数の NIC を 1...
序文WEB 開発では、クロスドメイン リクエストが頻繁に発生します。クロスドメインの問題を解決する方...
環境システム: Ubuntu 18.04ソフトウェア: qt5.12.8 1. インストールパッケー...
目次1. トランジションとアニメーションの違い2. Vueを使用して基本的なCSSトランジションとア...