【发布时间】:2013-10-22 06:06:58
【问题描述】:
我看到了这种执行代码的方式:
[eval][0]('alert("hello")')
我想知道用方括号括起来的不带引号的“eval”是什么意思以及为什么会这样。 (例如,window['eval'][0]('alert("hello")') 将导致 TypeError)。有没有描述这种语法的教程?
【问题讨论】:
-
还要注意
[alert][0]('test')给出了TypeError: Illegal Invocation。这是因为alert中通常绑定到window的this在像这样调用时未绑定(警告。[alert.bind(window)][0]('test')没有错误。 -
另外,查看question #4670805 以了解为什么您希望在全局范围内执行
eval的示例。 -
@lyrically wicked:您应该将 Matteo 的答案标记为正确的答案……它是最佳答案。
标签: javascript