- 閉鎖とは何ですか
(1). クロージャ: 計算する必要のない変数を含む関数の字句表現、つまり関数の外で定義された変数を使用できる関数 (2). 使用法: 変数の再利用と変数の保護を両立する
方法改ざんからの変数 プログラミング方法
- クロージャを使用する理由
(1). グローバル変数: 利点: 再利用できる、欠点: どこでも汚染されやすい
(2). ローカル変数: 利点: 関数内でのみ使用でき、汚染されない、欠点: 再利用できない!
- いつ使用するか
関数で変数を再利用し、変数が改ざんされないように保護したい場合は、クロージャを使用してください。
- 使い方は3ステップ
(1). 内部関数と保護する変数をラップする外部関数を定義する
問題: 内部関数は外部関数内のローカル関数になり、外部から使用できません。
(2). 外部関数は内部関数を外部に返します。
注: 内部関数には名前を付けないでください。いずれにせよ、内部関数が外部から受け取られた後、人々は新しい変数名を付けるでしょう。
問題: 関数が呼び出された場合にのみ戻り結果が得られます。
関数が呼び出されないと、関数は実行されず、戻り結果が得られません。
(3). 内部関数を使用したい人は、外部関数を呼び出して内部関数を取得する必要があります。使うために!
- 要約する
(1). クロージャとは正確には何ですか: 外部関数のスコープ オブジェクトは、内部関数によって参照および保護されるため、クロージャ オブジェクトと呼ばれます。
(2). 質問: クロージャが形成される理由: 外部関数が呼び出された後、内部関数は外部関数のスコープ オブジェクトを参照するため、外部関数のスコープ オブジェクトを解放できず、クロージャが形成されます。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>闭包</title>
</head>
<body>
<script>
var 函数=function(){
// 声明类全局变量=身上1000元零钱
var 零钱=1000;
return function(消费){
零钱-=消费;
document.write(`还剩${
零钱}元<br>`);
};
};
var 剩余=函数();
剩余(100);
剩余(100);
剩余(100);
</script>
</body>
</html>