我有一个特殊情况使用javascript。有一个由var myVar=xxx
定义的变量。然后我想保护这个变量被其他代码更改。我知道我可以在开始时用const
定义变量,但有一些原因我不能这样做。所以我正在寻找一种方法将现有变量转换为const变量。不确定是否可能。
答案 0 :(得分:2)
您无法将var
更改为const
,但假设在全局对象上定义了myVar
,您可以使用Object.defineProperty
进行最终绑定:
var myVar = 'sacred-value'
Object.defineProperty(window, 'myVar', {
writable: false,
value: window.myVar
})
myVar = 'evil-value'
console.log(myVar) //=> 'sacred-value'

注意:我假设window
对象是您的全局上下文,但如果您在非浏览器环境中执行,则可能需要使用global
代替
答案 1 :(得分:0)
您无法将var
更改为const
。
您可以将变量存储在对象中,对其进行变异,然后使用Object.freeze冻结对象以防止进一步的突变:
const variables = {
a: 'b'
};
variables.a = 'c';
Object.freeze(variables);
variables.a = 'd'; // does nothing
console.log(variables.a);

答案 2 :(得分:0)
之后您无法更改变量声明的类型。但是,您可以引入一个新范围,将其声明为常量:
var myVar = "xxx"; // assuming global scope
{
const myVar = window.myVar; // or `this.` or `global.` depending on your environment
… // your code here that will throw on assigning to `myVar`
}