web-dev-qa-db-ja.com

関数クロージャ内にラップされた変数を参照するための適切な専門用語は何ですか?

JavaScriptには、「プライベート」変数のようなものはありません。 JavaScriptでカプセル化と情報隠蔽を実現するために、次のように関数クロージャ内で変数をラップできます。

var counter = (function() {    
    var i = 0;
    var fn = {};
    fn.increment = function() { i++; };
    fn.get = function() { return i; };
    return fn;
{)();    
counter.increment();
counter.increment();
alert(counter.get()); // alerts '2'

JavaScriptではiをプライベート変数とは呼ばないので、何と呼びますか?

3

wikipedia によると、それらは「アップバリュー」と呼ばれています。

クロージャを使用すると、関数はその直接の字句スコープ外の変数にアクセスできます。アップバリューは、クロージャでバインド(クローズ)された自由変数です。クロージャは、そのアップバリューを「クローズオーバー」すると言われています。

人々があなたの意味を理解できるように、それらを誤ってプライベート変数と呼ぶ方がおそらく良いでしょうが。

7
Esailija