You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中能否用已有const的部分内容作为新const的名称?

动态创建常量的可行方案

首先,你原来写的代码语法上就不合法——const声明变量时,变量名必须是合法标识符,不能用表达式(比如const1.split(', ')[0]这种运行时才能得到结果的内容),所以直接这么写肯定会报错。

这种需求是可以实现的,但不能直接用普通的const声明,得换个思路:用对象的属性来模拟动态命名的常量,通过Object.defineProperty来设置属性不可修改,达到和const类似的效果。

示例代码:

const const1 = 'hello, "cheese"';
// 拆分出变量名和值,同时去掉值的引号
const [varName, rawValue] = const1.split(', ');
const varValue = rawValue.replace(/"/g, '');

// 创建一个专门存储动态常量的对象
const dynamicConstants = {};
// 定义不可修改的属性
Object.defineProperty(dynamicConstants, varName, {
  value: varValue,
  writable: false, // 禁止修改,模拟const的特性
  enumerable: true // 允许遍历(可选)
});

// 使用这个动态常量
console.log(dynamicConstants.hello); // 输出: cheese

// 尝试修改会触发错误
dynamicConstants.hello = 'new value'; // TypeError: Cannot assign to read only property 'hello' of object '#<Object>'

如果是在浏览器的全局作用域下,也可以用window[varName]来创建全局变量,但不推荐这么做(会污染全局环境),而且要模拟const的不可修改,同样需要用Object.defineProperty来设置writable: false。

内容的提问来源于stack exchange,提问作者kobero the cheeseman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 06:42:38