即使使用严格模式,我也可以更新对象变量。 怎么可能?是否可以创建常量对象?
"use strict";
const x = {a:"sss"}
x.a = "k"
console.log(x)
输出:
{ a: 'k' }
答案 0 :(得分:5)
好的 - 所以需要使用Object.freeze调用t使对象不可更改。 即使是严格模式也不是必需的。
const x = {a:"sss"}
Object.freeze(x);
x.a = "k"
console.log(x)
输出:
x.a = "k"
^
TypeError: Cannot assign to read only property 'a' of object '#<Object>'
答案 1 :(得分:5)
ES6 const
与不变性无关。
const
仅创建一个只读引用,这意味着您无法为该对象重新分配另一个值。
const
创建一个不可变binding
并保证不会发生rebinding
。
在 const 变量上使用assignment operator
会抛出 TypeError 异常:
简短的例子:
const x = {a:"sss"}
x={a:"k"}
console.log(x)
&#13;
您将看到以下消息:
&#34;未捕获的TypeError:分配给常量变量。&#34;