変数宣言時にconst
を使えば変数への再代入を防ぐことができます。
sample
const con = 1000;
con = 500;
// エラー発生 Uncaught TypeError: Assignment to constant variable.
const
であってもオブジェクトのプロパティの変更や追加削除を防ぐことはできません。
const con = {
prop1: 'p1',
prop2: 'p2',
};
con.prop1 = 'p3';
con.prop3 = 'p3';
console.log(con); // {prop1: "p3", prop2: "p2", prop3: "p3"}
Object.freeze
を使うことでプロパティに変更や追加を防ぐことができます。
const con = {
prop1: 'p1',
prop2: 'p2',
};
// オブジェクトを凍結
Object.freeze(con);
con.prop1 = 'p3';
con.prop3 = 'p3';
console.log(con); // {prop1: "p1", prop2: "p2"}
Object.freeze
の凍結は対象のオブジェクトだけです。より深いオブジェクトは凍結されないので注意。
const con = {
prop1: 'p1',
prop2: 'p2',
deep: {
prop4: 'p4'
}
};
Object.freeze(con);
con.deep.prop4 = 'p5';
console.log(con); // {prop1: "p1", prop2: "p2", deep: { prop4: "p5"}}