[25] Closure
1714 ワード
1.クローズとは?
クローズドスペース内のデータを使用可能にするJavaScript構文
2.closureの使い方
if(1<2) {
let a = function(){
let abc = 123;
}
a();
console.log(abc)
}
=== abc is not definedconsole.log(abc)
を使用すると、console.log(abc)
が属するif(1<2){}
関数でabcが検索されます.ただし、ナビゲーションターゲットではlet a=function(){}を除く
なぜなら、検索するカッコにカッコがある場合は、カッコは含まれていないと考えられます.
つまり、関数が実行された時点で使用される変数は使用できません。
Javascript内部では、メモリにlet abc=123を入力すると割り当てられますが、アクセスできない場合はメモリを割り当ててデータを浪費する必要がないため、メモリから除外されます(これは不要なデータになります).
しかし、この変数を関数の外で使用できれば幸いです.
if(1 < 2) {
let a = function(){
let abc = 123
let ddd = function(){
return 55
}
return ddd
}
let ccc = a()
console.log(ccc())
}
===55if(1 < 2) {
let a = function(){
let abc = 123
let ddd = function(){
return abc
}
return ddd
}
let ccc = a()
console.log(ccc())
}
===123Why?
let ccc = a()
運転後実行済み
let a = function(){}
let a = function(){}
の内運転let ddd = function(){}
、内運転return abc
、検索abc
、let ddd = function(){}
の範囲内で見つからないしたがって、ScopeChainから親関数に移動し、
let abc = 123
を検索し、その値を返し、let a = function(){}
の内部return ddd
を実行します.ccc()
が実行されると、最終的にはlet a = function(){}
が実行される社内ユーザlet ddd = function(){}
したがって、JavaScript内部からデータを削除することなく、let a = function(){}
の閉じた空間内のデータを使用することができる.Reference
この問題について([25] Closure), 我々は、より多くの情報をここで見つけました https://velog.io/@acwell94/25-Closureテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol