これは愚かな質問かもしれませんが、CONST変数またはLET変数に代入するためのベストプラクティスがあるかどうかを確認したいと考えました。私はCONST変数を宣言した後は再割り当てできないことを理解していますが、オブジェクトをCONST変数に代入することによってオブジェクトの内容を更新することができます。Javascript:const変数にオブジェクトを代入する変数を代入する
これは悪い習慣と考えられますか?そうでない場合は、LET変数を使用しないでください。
これは愚かな質問かもしれませんが、CONST変数またはLET変数に代入するためのベストプラクティスがあるかどうかを確認したいと考えました。私はCONST変数を宣言した後は再割り当てできないことを理解していますが、オブジェクトをCONST変数に代入することによってオブジェクトの内容を更新することができます。Javascript:const変数にオブジェクトを代入する変数を代入する
これは悪い習慣と考えられますか?そうでない場合は、LET変数を使用しないでください。
例は悪いことではありませんが、プロパティを変更してもperson
は同じオブジェクトを参照しているため、完全に受け入れられます。プロパティを追加、削除、変更することができ、person
は依然としてオブジェクトを参照します。
ES6 const
は、値ではなくバインディングを不変にします。
リビルドする必要がない場合は、const
を使用してください。それ以外の場合は、let
を使用してください。あなたの例では、person
を再バインドしていないので、それは有効で正しいです。
たとえば、2番目のオブジェクトperson2
があり、のように再バインドしようとすると、タイプエラーが発生します。
あなたがオブジェクトの値が不変にしたい場合は、Object.freeze()
ので、同じようにそれを行うことができます: `これは悪い習慣と考えられる
const person = Object.freeze({
name: "John"
});
person.name = "Kim";
// quietly fails or throws a type error
' NO .. 'なぜvariable'ためLET使わないのでしょうか?新しいオブジェクトを人に再割り当てしないで、オブジェクトのプロパティを変更します。 – Keith
'const myHome = new House();'は私が住んでいる 'House'オブジェクトです。' myHouse'がconstの場合、私は新しい家に移動するのを止めます。それは、私が「壁」をノックダウンしたり、窓を開けたり、家の中で家具を動かしたりするのを止めるものではありません。 – apsillers