閉パッケージは文法ではなく特性です
761 ワード
私が接触したいくつかの主要な開発言語には閉鎖的な概念がないので、長い間この名詞を見るたびに頭が真っ白になります.今回は記録します.
比較的正式なドキュメントと資料の紹介は閉鎖が抽象的で学術的で、私はプログラマーの角度から閉鎖を理解して、大体説明します.
閉パッケージは新しい技術ではなく、プログラミング言語特有の文法形式ではなく、特性であり、多くの言語がこの特性を異なる程度にサポートしています.この特性の核心は、関数の内部にもう一つの関数を定義し、内部関数は外部関数の変数を使用し、外部関数は最後に内部関数を結果として返し、外部関数の実行が終了すると、外部関数内で以前に使用された局所変数は解放されません.
JavaScriptでは、この機能を簡単に説明します.
プログラミング言語は、閉パッケージをサポートすることで柔軟性が向上しますが、プログラムの可読性が低下し、メモリに圧力がかかります.
比較的正式なドキュメントと資料の紹介は閉鎖が抽象的で学術的で、私はプログラマーの角度から閉鎖を理解して、大体説明します.
閉パッケージは新しい技術ではなく、プログラミング言語特有の文法形式ではなく、特性であり、多くの言語がこの特性を異なる程度にサポートしています.この特性の核心は、関数の内部にもう一つの関数を定義し、内部関数は外部関数の変数を使用し、外部関数は最後に内部関数を結果として返し、外部関数の実行が終了すると、外部関数内で以前に使用された局所変数は解放されません.
JavaScriptでは、この機能を簡単に説明します.
function A() {
var a = 1;
return function() {
return a;
}
}
var B = A();
var b = B();
javascriptは閉包特性をサポートするものであり、最終変数bの値も「1」であり、関数A内部で定義された局所変数aは、内部匿名関数では可視であり、内部匿名関数は関数Aによって結果が返されると、関数Aの実行が完了し、javascriptが閉包特性をサポートしないと仮定すると、関数A内部の局所変数aは関数の実行が完了すると回収される.この書き方にも問題があります.プログラミング言語は、閉パッケージをサポートすることで柔軟性が向上しますが、プログラムの可読性が低下し、メモリに圧力がかかります.