TIL 13日目データ型、スキャン、エンクロージャ


開始します。


これは徐々に深化の過程に入った日だ.今日学んだjavascriptは特別なスキルを学びました.特にCloserはPythonにはなかったので、とても斬新でした.これは詐欺に似た手法で、別の役に立つようだ.グローバル変数の設定が明確でない場合、本当に使いやすいです.今日から一日一日出てくるものが本当に難しくなってきたので、元気を出します.

元と参照

  • オリジナルタイプ(オリジナルタイプ)とリファレンスタイプ(リファレンスタイプ)を区別する必要がある理由は、ビデオで説明できます.
  • 元の資料型と参考資料型の違いを理解し、それぞれが適切な場合に使用します.
  • 元の資料型割当ての場合、変数に値(値)そのものが含まれ、参考資料型割当ての場合、保管箱アドレス(参照)の概念が含まれていることをコードで説明することができる.
  • 参考資料型は、固定サイズのロッカーではなく、動的にサイズを変える特殊なロッカーを使用していることが理解できる.
  • この部分は簡単にスキップしました.これは以前にも述べてきた内容です.少し概念的な部分は、元の資料型を参照する変数を関数のパラメータで送信すると、元の変数は変わらず送信されます.これはどうしていつも記憶に残っているのですか.ちょっと曖昧な部分があるみたいスコフとクロゼの前で、ウォーミングアップ感覚で軽く見てみました.
    a = 10
    function add10 (num) {
      num = num + 10
      return num
    }
    console.log(add10(a)) // 20
    console.log(a) // 10

    スキャン

  • の意味と適用範囲
  • が理解できる.
  • スコフの主なルールは理解できます
  • オーバーラップ規則
  • ブロック作用域
  • 全局スキャンと領域スキャン
  • グローバル変数と地域変数の間の優先度
  • let,const,varの差
  • グローバルオブジェクト(ウィンドウ)
  • について
    スコフは以前var宣言者の調査で誘拐された.varの内容は,関数レベルエンコーダブロックレベルで宣言されたvarがグローバル変数のように使用される.そしてこのレンズをうまく利用しているのがCloser

    マウスで描くのは大変ですね.

    エンクロージャ

  • Closer関数の定義と特徴
  • は理解できる.
  • エンクロージャのスキャン範囲
  • がわかります.
  • エンクロージャを使用して、いくつかの有用な符号化モード
  • を理解します.
    言語の定義はこうであるという意味です.私は確かにどんな概念か知っていますが、それを熟知するために自分で使用する例が必要だと思います.明日の教育の過程で、コプトをしながら勉強してもいいでしょう.
    DeepDaveの作者李応募のブログアドレスをリンクします.このブログは私が欲しい内容がきちんと整理されているので、もう少し追加すれば、このブログは参考になります.TILはここまで書くことが多いので、他の文章に添付内容を残したいです.
  • 李応募ブログ
    https://poiemaweb.com/js-closure
  • Closerとは?


    モジュールの定義


    Closer氏は、「関数と宣言された関数の語彙(語彙)環境の組み合わせ.この環境は、モジュールの作成時に有効な範囲内のすべての領域変数から構成されています.」と述べています..ここでのキーワードは「宣言関数」の「語彙環境」です.特に、JavaScriptは、関数を呼び出す環境とは異なり、既存の宣言された環境語彙環境に基づいて変数をクエリーしようとします.これはcloser関数と呼ばれる理由でもあります.つまり、クラスのクライアントイメージで「外部関数の変数にアクセスできる内部関数」と呼ばれています.

    Closer関数


    モジュールとは、外部関数コンテキストにアクセスできる内部関数です.外部関数の実行が終了しても、モジュール関数は外部関数のスキャン、すなわち関数宣言の語彙環境にアクセスできます.

    キャビネットの使用


    キャビネットの例では、n個の関数を作成し(currying、n個の関数を作成してパラメータを受け入れるのではなく、n個の関数を作成してパラメータを受け入れる)、キャビネットモジュール(変数を外部関数のスキャン内部に隠すことで、変数が関数の外に露出しないように)を実現できます.

    エンクロージャの欠点


    一般的な関数の場合、関数の実行が終了すると、オブジェクトは不要なセットになります(参考資料:MDN「JavaScriptメモリの管理」を参照).モジュールモードでは、オブジェクトはメモリに保持されます.外部関数のスキャンは、内部関数によっていつでも参照されるからです.したがって、エンクロージャを大量に使用すると、パフォーマンスが低下する可能性があります.JavaScriptは、ゴミ収集によるメモリ管理を行います.オブジェクトが参照ターゲットでない場合、ゴミ収集は自動的にメモリ割り当てを無効にします.