function aaa(){
console.log('1')
}
var fnName = 'aaa'
[fnName]() // 这样会报错
想以字符串作为函数名称,有办法吗?
function aaa(){
console.log('1')
}
var fnName = 'aaa'
[fnName]() // 这样会报错
想以字符串作为函数名称,有办法吗?
方括号就是要字符串,但这是不能省略调用对象的,你定义的函数在浏览器中是在 window 对象下的,所以应该 window[fnName]()
这样调用
上面回答很仔细了,在没有 window 对象的情况下,定义对象是最稳妥的。
想删了答案,结果要扣分,那算了,我贴一篇文章吧,也算没白回答,更具有普适性的方式(支持字符串点操作,对字符串错误更为友好,不过有时 undefined 不如直接报错):
How to execute a function from its string name (execute function by name) in JavaScript | Our Code World
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
指定对象就可以了,你的例子的
[fnName]()
改成这样window[fnName]()
就可以在浏览器环境中运行。但是想要更好的兼容性,就自己建个对象吧,像这样: