2017-05-30 17 views
0

私はjavascriptファイルを書いています。ここでは、明らかなパターンを持つ変数が最後に破棄されます。javascriptでは、変数の代わりにプロパティを使用しても問題ありませんか?

var variable = function() { 
    var data = 3; 

    function getme() { 
    return data; 
    } 

    return { 
    fdata: data, 
    me: getme 
    }; 
}(); 

変数に組み込まれている削除オプションがないため、このようなプロパティで置き換えることはできますか?

this.variable = function() { 
    var data = 3; 

    function getme() { 
    return data; 
    } 

    return { 
    fdata: data, 
    me: getme 
    }; 
}(); 

プロパティがdelete property_nameで削除可能であるためです。これはプログラミングパターンを破ることができ、それはコーディングの有効な方法ですか?

+1

に同じことを行い「宣言環境レコード」、後者にその変数を追跡しreturnステートメントにはアクセスできません。関数 'variable'(プロパティかどうか)は決して呼び出されません。 – evolutionxbox

+0

申し訳ありません@evolutionxbox ..私は –

+0

を編集しました(両方の例が同じになりました) – evolutionxbox

答えて

-1

どちらのコードも同じです。

実際には、JSでvarを作成するとき、これはウィンドウオブジェクトに(またはあなたが関数から外れている場合は)これに添付されます。

var test = 1; 
 
alert(test); 
 
this.test = 2 
 
alert(test); 
 
window.test = 3; 
 
alert(test);

+0

これは、変数が関数内で作成された場合の例のように、OPの質問に答えません。 – evolutionxbox

0

あなたはグローバル変数fooを持っていて、それを削除してみたいと思います。 deleteはプロパティのためにしか機能しないので、それはできません。今

delete window.foo; 

あなたがそれにアクセスしようとあなたが得る:

window.foo = 'bar'; // this == window (if not in any function) 

その後、削除することができます

をあなたは何ができるか

は、グローバル変数を宣言明示的です

console.log(foo) // ReferenceError 
console.log(window.foo) // undefined 

var fooで定義することはできませんそうしないと、削除は機能しません。

とにかく私があなただったら、ガベージコレクタがそれを処理するので、変数を "削除する"ことはありません。これらの記事へ

+0

window.fooとthis.fooの両方が同じです –

+0

厳密なモードであれば、 'bind'、' call'などを使わない限り関数の 'this'は' undefined'と同じです。 – Fahmi

0

http://webcache.googleusercontent.com/search?q=cache:auElwuFsub0J:perfectionkills.com/understanding-delete/+delete+javascript&cd=2&hl=en&ct=clnk

Difference between variable declaration syntaxes in Javascript (including global variables)?

おかげで、私は今、多くの明確な感じ。 var xthis.xはどちらもグローバルオブジェクトのプロパティを作成するだけです。前者のxは 'DontDelete'属性をfalseに設定し、後者はtrueに設定します。多くの内部の詳細について

、前者は `data`が異なっている、両方の例において、「オブジェクト環境レコード」(What really is a declarative environment record and how does it differ from an activation object?

関連する問題