是否可以将var转换为const?
在这样的场景中说:
var appname = ''
function setAppName(name) {
appname = name // can I convert this to const now?
}
基本上,这是一个参数级别。参数需要在整个文件中都可以访问,我希望在第一次赋值后使其常量。这可能吗?
添加:如果除了创建一个包含此参数的对象之外,还有其他方法,那会更好(对于更简单的解决方案(。我将处理这样的多个参数,冻结一个对象将导致整个对象冻结。我希望在参数级别上做到这一点。
因此,要么将参数更改为常量。或者(我认为这是不可能的(将参数的范围更改为全局:
function setAppName(name) {
const appname = name // can I change the scope and make this global?
}
谢谢。
将您的应用程序名称放入对象中并冻结它。
let appSettings = { name: "" };
function setAppName(name) {
appSettings.name = name;
Object.freeze(appSettings);
}
冻结可防止添加、删除和修改对象中属性的值,因此在设置完所有其他设置(如果要使更多变量保持不变(后,应仅调用Object.freeze
一次。
您可以使用对象来完成此操作。
const globals = {
appname: ''
}
function setAppName(name) {
globals.appname = name;
Object.freeze(globals)
// After this point, value of appname cannot be modified
}
感谢您的所有投入。
我找到了一个变通办法来实现我想要实现的目标。
var appname = ''
function setAppName(name) {
if (appname === '') {
appname = name // can I convert this to const now?
}
}
虽然这并没有将其转换为const,但我只是在setter上添加了一个保护,它现在将无法覆盖该值(除非我要再次初始化为空字符串(。
这不是愚蠢的证明,但这将满足我的需要。
谢谢大家!