cqwcns 发表于 2022-7-1 10:47

JS如果使用变量做变量名

以下是一个简单的Demo,当然实际场景是比较复杂的。


前面会有一些逻辑来生成一个cName变量,我希望后面使用这个变量的值来新建另一个变量。
具体需求如下。

const cName = 'chart' + Math.ceil(Math.random() * 10);
// 这里假设cName='chart8'
const = () => { console.log('do something') };
// 希望效果是这样chart8= () => { console.log('do something') };

()
// 希望效果是这样chart8();



当然这样写是报错的,这种需求有什么办法实现,请指教,感谢。

归隐小赵 发表于 2022-7-1 10:58

数组可以
arr=[];
cname="123"
arr= () => { console.log('do something') };

jmfjmf 发表于 2022-7-1 11:11

jmfjmf 发表于 2022-7-1 11:12

boxer 发表于 2022-7-1 11:48

const cName = 'chart' + 8//Math.ceil(Math.random() * 10);
                window = () => { console.log('do something') };
                chart8();

冰茶荼 发表于 2022-7-27 10:30

怎么不考虑放到对象里面

var a='char',b={};
b = 123123123

steven026 发表于 2022-8-1 21:19

const cName = 'chart' + Math.ceil(Math.random() * 10);
eval(`${cName} = () => { console.log('do something+${cName}') }`);
eval(`${cName}()`)
还有一种办法用eval,不过这样变量就变全局了

csolbbs123 发表于 2022-8-10 22:46

放对象上呗,直接在上下文生成变量不太行,放window上和用eval都破坏性太大了,放对象上比较合理
页: [1]
查看完整版本: JS如果使用变量做变量名