TIL 13日目データ型、スキャン、エンクロージャ
3514 ワード
開始します。
これは徐々に深化の過程に入った日だ.今日学んだjavascriptは特別なスキルを学びました.特にCloserはPythonにはなかったので、とても斬新でした.これは詐欺に似た手法で、別の役に立つようだ.グローバル変数の設定が明確でない場合、本当に使いやすいです.今日から一日一日出てくるものが本当に難しくなってきたので、元気を出します.
元と参照
a = 10
function add10 (num) {
num = num + 10
return num
}
console.log(add10(a)) // 20
console.log(a) // 10
スキャン
スコフは以前var宣言者の調査で誘拐された.varの内容は,関数レベルエンコーダブロックレベルで宣言されたvarがグローバル変数のように使用される.そしてこのレンズをうまく利用しているのがCloser
マウスで描くのは大変ですね.
エンクロージャ
言語の定義はこうであるという意味です.私は確かにどんな概念か知っていますが、それを熟知するために自分で使用する例が必要だと思います.明日の教育の過程で、コプトをしながら勉強してもいいでしょう.
DeepDaveの作者李応募のブログアドレスをリンクします.このブログは私が欲しい内容がきちんと整理されているので、もう少し追加すれば、このブログは参考になります.TILはここまで書くことが多いので、他の文章に添付内容を残したいです.
https://poiemaweb.com/js-closure
Closerとは?
モジュールの定義
Closer氏は、「関数と宣言された関数の語彙(語彙)環境の組み合わせ.この環境は、モジュールの作成時に有効な範囲内のすべての領域変数から構成されています.」と述べています..ここでのキーワードは「宣言関数」の「語彙環境」です.特に、JavaScriptは、関数を呼び出す環境とは異なり、既存の宣言された環境語彙環境に基づいて変数をクエリーしようとします.これはcloser関数と呼ばれる理由でもあります.つまり、クラスのクライアントイメージで「外部関数の変数にアクセスできる内部関数」と呼ばれています.
Closer関数
モジュールとは、外部関数コンテキストにアクセスできる内部関数です.外部関数の実行が終了しても、モジュール関数は外部関数のスキャン、すなわち関数宣言の語彙環境にアクセスできます.
キャビネットの使用
キャビネットの例では、n個の関数を作成し(currying、n個の関数を作成してパラメータを受け入れるのではなく、n個の関数を作成してパラメータを受け入れる)、キャビネットモジュール(変数を外部関数のスキャン内部に隠すことで、変数が関数の外に露出しないように)を実現できます.
エンクロージャの欠点
一般的な関数の場合、関数の実行が終了すると、オブジェクトは不要なセットになります(参考資料:MDN「JavaScriptメモリの管理」を参照).モジュールモードでは、オブジェクトはメモリに保持されます.外部関数のスキャンは、内部関数によっていつでも参照されるからです.したがって、エンクロージャを大量に使用すると、パフォーマンスが低下する可能性があります.JavaScriptは、ゴミ収集によるメモリ管理を行います.オブジェクトが参照ターゲットでない場合、ゴミ収集は自動的にメモリ割り当てを無効にします.
Reference
この問題について(TIL 13日目データ型、スキャン、エンクロージャ), 我々は、より多くの情報をここで見つけました
https://velog.io/@shleecloud/TIL-13일차-자료형-스코프-클로저
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(TIL 13日目データ型、スキャン、エンクロージャ), 我々は、より多くの情報をここで見つけました https://velog.io/@shleecloud/TIL-13일차-자료형-스코프-클로저テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol