javascript - 在函数字符串上使用 eval

标签 javascript

我正在做:

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/

相关文章:

javascript - JS 函数不更新 HTML 字符串

javascript - Typescript,准确表示类方法行为

javascript - 如何让网页上的每个用户实时查看和编辑 HTML Canvas ?

javascript - 图片直接加载正常,但不在实际页面上

javascript - 将位置绝对元素隐藏在位置相对父元素之外

javascript - 大数组与小数组的对象

JavaScript - 结构体数组

javascript - 我想在javascript中对3维数组进行排序

javascript - 如何在 JavaScript 中显示对象的值?

JavaScript:用数组解构一个对象,解构一个有对象的数组