H5W3
当前位置:H5W3 > 其他技术问题 > 正文

【前端问题精选】怎么这样调用函数呢?


function aaa(){
  console.log('1')
}

var fnName = 'aaa'



[fnName]() // 这样会报错

想以字符串作为函数名称,有办法吗?

回答:

指定对象就可以了,你的例子的 [fnName]() 改成这样 window[fnName]() 就可以在浏览器环境中运行。

但是想要更好的兼容性,就自己建个对象吧,像这样:

<script>

var myproject = {}

myproject.aaa = function () {
  console.log('1')
}

var fnName = 'aaa'

myproject[fnName]() 

</script>

回答:

方括号就是要字符串,但这是不能省略调用对象的,你定义的函数在浏览器中是在 window 对象下的,所以应该 window[fnName]() 这样调用

上面回答很仔细了,在没有 window 对象的情况下,定义对象是最稳妥的。
想删了答案,结果要扣分,那算了,我贴一篇文章吧,也算没白回答,更具有普适性的方式(支持字符串点操作,对字符串错误更为友好,不过有时 undefined 不如直接报错):
How to execute a function from its string name (execute function by name) in JavaScript | Our Code World

本文地址:H5W3 » 【前端问题精选】怎么这样调用函数呢?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址