我正在做:
eval('function(){ console.log("Hello World"); }')();
但这会产生错误:
Uncaught SyntaxError: Unexpected token (
为什么这是错误的?
最佳答案
eval
运算符需要一个Program 作为输入,而 JavaScript 的语法要求所有
顶级程序元素是声明或语句。
spec说:
Let prog be the ECMAScript code that is the result of parsing x as a Program.
function
不能启动顶级语句,但它可以启动函数声明,但前提是它有名称。
这就是为什么你会得到“Unexpected token (”;它需要在打开参数列表的括号之前有一个函数名称。
正如其他人所指出的,要eval
一个函数,您需要欺骗 JavaScript 解析器在它需要语句的地方找到一个表达式。将正文括在括号中是实现此目的的一种方法。
关于javascript - 在函数字符串上使用 eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25426594/