为什么[eval]在[eval] [0]('code')中工作?

lyr*_*ked 1 javascript

我看到这种方式执行代码:

[eval][0]('alert("hello")')  
Run Code Online (Sandbox Code Playgroud)

我想知道方括号包围的未引用的'eval'是什么意思,以及为什么这样做.(例如,window['eval'][0]('alert("hello")')将导致TypeError).有没有描述这种语法的教程?

Mat*_*ari 6

这是间接的eval调用

引用文章:

根据ES5,所有这些都是间接调用,应该在全局范围内执行代码.

因此,您可以使用这些"技巧" eval在全局范围内执行,而不是在当前范围内执行.

它之前的工作[eval]是一个数组,其第0个元素是eval函数,也就是说[eval][0] === eval,你正在调用它传递字符串'alert("hello")'作为参数.