ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の左クエリと右クエリについての深い理解

JavaScript の左クエリと右クエリについての深い理解

零到壹度
零到壹度オリジナル
2018-04-04 10:41:493996ブラウズ

この記事は主に JavaScript の左クエリと右クエリの詳細な理解を紹介します。編集者が非常に優れていると考えたので、参考として共有します。一緒に見てみましょう

値と参照

スコープ

  • 狭義では、スコープはオブジェクトです(より正確には、コレクションである必要があります) ;

  • 大まかに言うと、スコープは変数を保存し、後でこれらの変数を簡単に見つけられるようにするための一連のルールです。

    • スコープは、宣言されたすべての識別子で構成される一連のクエリを収集して維持する責任があります。そして、現在実行中のコードのこれらの識別子へのアクセス権を決定する非常に厳格なルールのセットを実装します。

コードの実行前の準備:


  • 1. プロモーション (変数関数の関数式) を決定します。これは、
    • を指します。 3. 対応するスコープに関連付けられます。 コード セグメントが関数本体の場合、これに基づいて、パラメータの割り当て、引数の割り当てを追加する必要があります。スコープと実行 コンテキスト環境間の関係:

    • スコープには複数のコンテキスト環境が含まれる場合があります。コンテキストが存在しなかった可能性もあります (関数が一度も呼び出されなかった) 可能性があり、関数が呼び出された後、コンテキストは破棄されます
    • 左クエリ:

  • 代入シンボルの左側、代入操作のターゲットです。
    • 関数が呼び出されたときに実際に参加する仮パラメータ間の関係は左クエリです。

等号の左側の変数のクエリ。スコープ チェーン全体で変数の宣言が見つからない場合、JS エンジンは自動的に同じ名前の変数をグローバルに宣言しますが、この変数の宣言は昇格されません。

(function(){
    function test(a){
        b=a;
        console.log(b);//2
    }
    test(2);
})();
console.log(b);//2
  • 右クエリ:
    • 代入演算のソースである代入記号の非左辺。
    • 等号の非左辺変数のクエリ。 。スコープ チェーン全体で、変数の宣言が見つからない場合は、ReferenceError エラーが直接スローされます。 RHS、LHS がスローされます。 ReferenceError 例外

    • ReferenceError 例外は、スコープの決定は成功しましたが、結果に対する操作が不正または不当であることを意味します。クエリはすべてのネストされた関数をクエリしています。必要な変数がドメイン内で見つからない場合、エンジンは ReferenceError 例外をスローしますが、typeof が使用されている場合は例外が報告されないことに注意してください。

  • 左のクエリは見つかりません。クエリ変数のすべてのネストされたスコープに必要な変数がある場合、その名前の変数がグローバル スコープに作成されます

    • 変数が宣言されていない場合 (変数がどのスコープでも見つからない場合)、これら 2 つのクエリは異なります 同じです
    • 非厳密モード:
    • 厳密モード:

  • セキュリティ防止メカニズムの種類

    • 1 グローバル変数 DEBUG を「デバッグ」として使用します。プログラム内の mode" スイッチ、DEBUG.js ファイルのステートメント var DEBUG =true; このファイルは開発およびテスト中にのみブラウザーにロードされ、運用環境にはロードされません;

      console.log(a);//ReferenceError: a is not defined
    • 2.不足している関数のポリフィルを作成します (パディング コード、現在の実行環境で不足している関数を補うために使用されます)

      //a并未定义赋值
      console.log(typeof a);//undefined
    • 関連する推奨事項:
    • 左右のクエリ


    • 左クエリと右クエリ

以上がJavaScript の左クエリと右クエリについての深い理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。