JavaScript(1)


2022. 03. 17.木曜日


ブラウザとJavaScript


Webブラウザの定義:Webブラウザは、Webサーバ上で双方向に通信するHTMLドキュメントまたはファイルに関連付けて出力できるアプリケーションソフトウェアです。


初期Web:Webブラウザ、Webサーバからなり、HTMLドキュメントを交換します.

WebはHTML、CSS、JavaScriptで構成されています。

  • HTML:静的言語でWebを担当する構造.
  • CSS:静態言語でWebの設計を担当する.
  • JavaScript:Webを動的言語で制御します.
  • 理解:Webはブラウザを通じて私たちに渡されます。JavaScriptはWebブラウザを制御することで処理します。


    関数(function)と範囲(scope)


    関数(function):外部コードで呼び出せるサブルーチン

  • 文のシーケンスから構成されます.
  • 関数に値(パラメータ)を割り当てると、関数は値(戻り)を返します.
  • JavaScriptでは、関数はFunctionオブジェクト(Object)であり、属性メソッドを持つfirst-classオブジェクトである.
  • 範囲(Scope):範囲を表し、正確には現在実行中のコンテキスト(Execution Context)


    実行コンテキスト:実行可能コード実行環境
  • c言語はスタック形式でスタックされ、これと同様にJavaScriptもスタック形式を有する.
  • 子ケンテキストから親ケンテキストにアクセスできますが、親コンテキストから子ケンテキストにアクセスできません.
  • 子ケンテキストに変数がない場合は、親ケンテキストにアクセスして変数を検索します.この順序はスキャンチェーンに従って実行される.
  • 構成

  • 変数オブジェクト:実行コンテキストに必要な情報を配列形式で格納します.ex)引数、ユーザ定義変数およびオブジェクト
  • 領域変数:関数で定義された変数またはオブジェクト.ただし、初期化されていないため定義されていません.
  • スコフチェーン:有効範囲をリスト形式で言及します.関数呼び出しではなく、関数定義の場所から親コンテキストのスコフチェーンを読み込み、現在の実行範囲オブジェクトをヘッダに追加します.
  • thi:この変数オブジェクトにバインドするオブジェクトを保存します.
  • リファレンス

    キャビネット(closure)


    Closerとは?


    :親キーテキスト(context)から子キーテキスト(context)にアクセスできません.この問題を解決する方法はclosureを使用することである.
  • サブコンテキスト(コンテキスト)から関数オブジェクト(関数オブジェクト)を返します.
  • を上位ケンテキスト(context)の変数としてアクセスする.
  • では、関数オブジェクトのスコープチェーンが変数ケンテキスト->子ケンテキスト->親ケンテキストに接続されます.
  • の親コンテキストでは、子ケンテキストアクセスとして使用できます.
  • function greeting() {
        let message = 'Hi';
    
        function sayHi() {
            console.log(message);
        }
    
        return sayHi;
    }
    let hi = greeting();
    hi(); // Hi 출력
    ->メッセージは実際に使用されますが、親ケンテキストからアクセスできないため、エンクロージャが使用されます.
    リファレンス