JavaScriptの閉鎖を理解する最も簡単な方法
5395 ワード
閉鎖は多くの理由のためにJavaScriptで最も議論された話題です、しかし、私はそれを理解するのが簡単にするつもりです.最初に、我々はMDNから閉鎖の定義を見ます.
最も身近な例でそれを壊しましょう.
上記はJavaScriptコードで変換したものです.ペンギンにアクセスしてください
冷蔵庫のすべての
台所 のすべて
ホーム のすべての
あなたのバグの一部を修正することができますが、JavaScriptの世界では、それは、その機能以来、それだけで
の機能は、 の機能は、 の機能は、
ここで3つのクロージャがあり、Chrome Devツールが言うことを見てみましょう.
その周囲の状態への参照と共にバンドルされたすべての関数は閉鎖です.実際には、関数が作成されるたびにクロージャが作成されます.
より多くのために、https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures
A closure is the combination of a function bundled together (enclosed) with references to its surrounding state
最も身近な例でそれを壊しましょう.
--Home
--Bedroom
--Office Room
--Kitchen
--Fridge
--Penguin
上記の構造、家、およびそれをベッドルーム、オフィスルーム、その2021年から、台所を見てみましょう.また、台所の中に冷蔵庫があります.さて、冷蔵庫にペンギンがいると思います.function Home() {
function OfficeRoom(){
console.log('OfficeRoom')
}
function Bedroom(){
var bed = "bed"
console.log('Bedroom')
}
function Kitchen() {
var oven = "oven"
function Fridge() {
var bread = "bread"
function Penguin() {
console.log(bread, oven, Bedroom(), OfficeRoom())
}
Penguin()
}
Fridge()
}
Kitchen()
}
Home()
どのようなペンギン()関数がアクセスできるのか?
上記はJavaScriptコードで変換したものです.ペンギンにアクセスしてください
冷蔵庫のすべての
台所
ホーム
あなたのバグの一部を修正することができますが、JavaScriptの世界では、それは、その機能以来、それだけで
OfficeRoom()
を呼び出すことができますし、何かを返すことができますが、同じようなことができますが、Bedroom()
のために行く.Kitchen()
に移って、oven
変数にアクセスでき、Fridge()
でbread
変数にアクセスできます.では閉鎖の定義を見てみましょう
A closure is the combination of a function bundled together (enclosed) with references to its surrounding state
Kitchen()
およびBedroom()
であるその周囲の状態に関連して束ねられている.OfficeRoom()
であるその周囲の状態への参照と共に束ねられた.そして、それがFridge()
から参照したすべて.oven
であるその周囲の状態への参照と共に束ねられた.そして、それがHome()
から参照したすべて.In hierarchy it will bundle reference to function until Global scope.
ここで3つのクロージャがあり、Chrome Devツールが言うことを見てみましょう.
その周囲の状態への参照と共にバンドルされたすべての関数は閉鎖です.実際には、関数が作成されるたびにクロージャが作成されます.
より多くのために、https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures
Reference
この問題について(JavaScriptの閉鎖を理解する最も簡単な方法), 我々は、より多くの情報をここで見つけました https://dev.to/khalid283/easiest-way-to-understand-javascript-closure-7olテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol