You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

执行包含<script>标签的字符串形式JavaScript代码时遇语法错误的技术咨询

解决执行字符串形式JS代码时的「unexpected token '<'」错误

嘿,我明白你遇到的问题了——你把HTML的<script>标签当成了JS代码的一部分传给setTimeoutnew Function,这就是报错的根源!

问题出在哪?

setTimeout的字符串参数、new Function的参数,本质上都是纯JavaScript代码片段,而不是HTML代码。当JS解析器看到<script>这个HTML标签时,它完全不知道这是什么玩意儿,<符号在JS语法里是比较运算符,出现在代码开头就会触发语法错误,也就是你看到的「unexpected token '<'」。

正确的写法

你只需要把<script>标签去掉,直接传入要执行的JS代码即可:

1. 修复setTimeout的写法

// 字符串形式(能解决问题,但不推荐)
setTimeout('console.log("some string")', 1);

// 更推荐的函数形式(无语法风险,调试更方便)
setTimeout(() => {
  console.log("some string");
}, 1);

2. 修复new Function的写法

注意new Function只是创建一个函数,你需要手动调用它才能执行代码:

// 创建并执行函数
new Function('console.log("some string")')();

额外提醒

尽量避免用字符串形式传递JS代码给setTimeoutnew Function

  • 存在XSS安全风险:如果字符串来自用户输入,很容易被注入恶意代码;
  • 代码解析会有额外性能开销;
  • 调试难度大:字符串形式的代码无法直接断点调试。

内容的提问来源于stack exchange,提问作者Mukul Sharma

火山引擎 最新活动