2016-12-23 8 views
-1

私はプログラミング言語の最新のプログラミング規則と最新の追加機能を大いに活用しています。最近Google Guidelinesに、varの代わりにconstletを使用することをお読みください。このような今Javascript - 新しい規則を使用して名前空間オブジェクトを宣言する方法

私のプロジェクトで、私は名前空間のオブジェクト変数を持っている(つまり、彼らは呼ばれているものだ場合、私は間違っている場合は、私にしてください修正)

var myObj = { 

    func1: {}, 
    func2: {} 
}; 

var myOtherObj = { 

    var1: 'foo', 
    var2: 'bar' 
}; 

どのように私は、新しい規則を使用して、今、これらのオブジェクトに名前を付ける必要がありますconstまたはlet?これらの大きなオブジェクトが時間の経過とともに変化するかどうかわからないので混乱しています...

+0

これらを 'const'に変更してコードを実行します。何かが変数を変更したいので壊れた場合は、それを修正するか、あるいはそれを 'let'に変更してください。 – Pointy

+0

問題は、このような大きなオブジェクトが何かを意味するのか、それが単純なローカル変数なら変更が必要なのかどうか分かりません。 –

+1

'const'宣言は、 **オブジェクト**不変。 **変数**を不変にします。 – Pointy

答えて

3

constオブジェクトは変更されません(そうでない場合はfreeze)。変数の値が変更されないようにします。例えば

あなたはまだあなたがconstと宣言された変数を行うことはできませんどのような(しかし、あなたの意志のように見えるしません)

const myObj = { 

    func1: {}, 
    func2: {} 
}; 

、その後

myObj.fun3 = function(){... 

を行うことができますモジュールは通常constと宣言されます。モジュールは通常constと宣言されます。モジュールは通常constと宣言されます。モジュールは通常constで宣言されます。モジュールは通常constで宣言されます。

1

私が従おうとしている一般的なルールは、constどこでも、letconstvarを使用できない場合です。あなたの例の場合

、あなたがオブジェクト(または他の例アレイなどで)を定義している、私は、変数の参照がまたは変更される可能性のどちらかという明確な指示を与えることletを有するものを定義する傾向があります中身

constリスト内のオブジェクトや要素のプロパティが変更されるのを防ぐことはできません。その場合は、私の意見ではletを使用することをお勧めします。それはより明確で道の混乱を防ぐことができます。

+0

私の例では、myOtherObj.var1が実行時に何度も値を変更する場合はどうなりますか?myOtherObjがconstとして宣言されている場合は動作しますか? –

+0

はい、それでも動作しますが、意味的に混乱します。私が言ったように、 'const'はオブジェクトのプロパティやリスト要素が変更されるのを防ぐわけではなく、変数参照の代入を禁止するだけです。したがって、あなたの場合、オブジェクト 'myOtherObj'の内容が何度も変更される場合、' let'を使ってあなたの意図を明確に示します。 – sma

1

あなたが本当にも不変であるオブジェクトを参照する値を変更することはできませんのシンボルにしたい場合は、あなたがこれを行うことができます:

const CONSTANT = Object.freeze({ 
    a: "hello", 
    b: "world" 
}); 

また古いプラットフォームはそこにその残っていることを心に留めてconstletをサポートしません(その点についてはおそらくObject.freeze())。

関連する問題