JavaScriptのクロージャは何ですか?
6979 ワード
ジャバスクリプト閉鎖で英雄に行きましょう.いくつかの厳しいものはこちら!レッツゴーオン.
'クロージャ'は、ツールではない、彼らはあなたが理解するようになった場合、あなたは私がしたように、さまざまな方法で言語を見に行くだろうという概念です😐. 私はあなたに深い方法で正しい方法をスローするつもりはない、我々は最初のいくつかの他の必要な概念(依存)を見て、クロージャのためのあなたの心を準備している.
スコープは、ランタイム中に変数がアクセス可能な場所です.
実行コンテストは、現在のコードが実行されているスコープです.プログラムを起動すると、まずグローバル実行コンテキストがあります.関数が呼び出されると、JavaScriptは新しい実行コンテキストを作成します.ローカル実行コンテキストは、この実行コンテキストにローカルな変数の独自のセットを持っています.
' return 'ステートメントまたはcloseブラケット''が発生した場合、この関数は呼び出されたコンテナーに戻り値(または未定義の場合は')を渡します.関数のローカルコンテキストは削除されます(変数のすべてを使用します).
例:
すべて
に戻る
あなたが気がつくことは、あなたが持っている規則によって、このカウンタ変数が記憶され、それぞれの時間をインクリメントする方法がないということです.私はクロージャと呼ばれるパズルの欠落部分.
🙂ハッピーコーディングを読んでくれてありがとう😎
私は今週、いくつかのオファーや発表を投稿驚くべき記事の毎週のニュースレターを取得します.購読するHere
Closures
ゲームのボスです.しかし、スコープチェーン、語彙環境、正確にあなたのJavaScriptが実行されているようなものを最初に理解することなく、それが何であるかを理解することは不可能です.あなたはそれらを使用するが、クロージャと呼ばれる知っていない.'クロージャ'は、ツールではない、彼らはあなたが理解するようになった場合、あなたは私がしたように、さまざまな方法で言語を見に行くだろうという概念です😐. 私はあなたに深い方法で正しい方法をスローするつもりはない、我々は最初のいくつかの他の必要な概念(依存)を見て、クロージャのためのあなたの心を準備している.
スコープ
スコープは、ランタイム中に変数がアクセス可能な場所です.
let a = 5;
console.log(a); //5
// The above code declared in the global scope. Variables declared in the same scope have access to one another.
const bla = () => {
// each time you create a new function, you create anew scope called function scope.
let bb = 6;
console.log(a); // 5 (function scope has access to the global scope)
}
console.log(bb) // error (global scope does not have access to the function scope)
実行コンテキスト
実行コンテストは、現在のコードが実行されているスコープです.プログラムを起動すると、まずグローバル実行コンテキストがあります.関数が呼び出されると、JavaScriptは新しい実行コンテキストを作成します.ローカル実行コンテキストは、この実行コンテキストにローカルな変数の独自のセットを持っています.
' return 'ステートメントまたはcloseブラケット''が発生した場合、この関数は呼び出されたコンテナーに戻り値(または未定義の場合は')を渡します.関数のローカルコンテキストは削除されます(変数のすべてを使用します).
語彙スコープ
例:
const bla = () => {
let a = 48;
const gg = () => {
console.log(a);
}
gg();
}
bla() // 48
ここで重要なのは、その関数gg
にアクセスするa
. でもa
の呼び出し元のコンテキストgg
( GGが呼ばれる場所からのスコープ).重要な->関数は、呼び出し元のコンテキストで定義された変数へのアクセスを持っています.この現象の正式な名前は“語彙スコープ”です.関数復帰関数
const createAdder = () => {
const addNumber = (a, b) => {
let ret = a + b
return ret
}
return addNumber
}
let adder = createAdder()
let sum = adder(3, 2) // 5
ここで重要なことは、関数定義を変数に格納することができ、呼び出されるまでプログラムには見えないことです.これが完了すると、ローカル実行コンテキストが一時的に作成されます.このコンテキストは関数が終了したときに死亡します.ジャバスクリプト
すべて
dependencies
宣言され、説明、実際の話題に飛び込みましょう、我々はすべてを待っている!const counterNew = () => {
let counter = 0;
const func = () => {
counter = counter = 1;
return counter;
}
return func;
}
let incr = counterNew(); // returns a function
incr() // 1
incr() // 2
// Ah!! How it get incremented?
答えは単純です-クロージャ.クロージャとは
"A closure is a function which has reference to it's the lexical environment. This environment consists of any local variables that were in-scope at the time the closure was created!' - MDN Docs
に戻る
counterNew
関数.それを理解しようとすると、もう一度読んで、あなたの研究を行う.閉じるこの動画はお気に入りから削除されていますこれは高度なトピックと考えられているので、あなたの時間を取る(私は取っている)と考えてください.あなたが気がつくことは、あなたが持っている規則によって、このカウンタ変数が記憶され、それぞれの時間をインクリメントする方法がないということです.私はクロージャと呼ばれるパズルの欠落部分.
🙂ハッピーコーディングを読んでくれてありがとう😎
私は今週、いくつかのオファーや発表を投稿驚くべき記事の毎週のニュースレターを取得します.購読するHere
Reference
この問題について(JavaScriptのクロージャは何ですか?), 我々は、より多くの情報をここで見つけました https://dev.to/rahxuls/what-are-closures-in-javascript-53elテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol