我正在尝试使用 eval
在我的 HTML5/JS/CSS3 项目中运行用户定义的代码。如果用户定义的代码包含 eval
,那么当代码运行时,我会在 JS 控制台中收到以下错误:
Uncaught SyntaxError: Unexpected token ILLEGAL
在
eval(a);
带括号的下划线。有什么建议吗?
顺便说一句:我正在使用 Chrome
最佳答案
我认为当一个字符串参数位于 eval 内(而 eval 内的字符串参数又是另一个 eval 内的字符串参数)时,一个字符串中存在 ' 和 "时就会导致问题。解决方案是声明一个函数来 addshalshes,就像 php 上的函数一样.
当你尝试例如
console.log("hey you !");
当你添加 eval 时,它工作正常
eval('console.log("hey you!");');
这个也可以正常工作,但是如果你想将此代码包装在 eval 中,你应该像这样添加斜杠
eval('eval(\'console.log("hey you!");\');');
这意味着当用户输入他的代码时你总是需要添加斜杠,这个代码可能会帮助你
str = str.replace(/'/g, "\\'");
关于javascript - 是否允许嵌套评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24965221/