JavaScript多行模板字符串中插入反引号的报错解决咨询
修复方案
你的报错原因判断正确,JavaScript 模板字符串中嵌套使用反引号需要做转义处理,具体修复逻辑如下:
核心原理
外层模板字符串的反引号会被默认识别为字符串结束标记,你只需要给内层 String.raw 用到的所有反引号添加反斜杠 \ 转义即可。转义后的反引号不会打断外层模板字符串结构,模板字符串解析后会自动去掉转义符,生成的代码会完整保留你需要的 String.raw 语法,完全不影响后续逻辑执行。
修复后代码
const scriptTexta = document.createTextNode(` function validate${currNum}() { if (document.getElementById("btn${currNum}").checked) { adminmessages[${currNum}] = [String.raw\`${br[0]}\`,String.raw\`${br[1]}\`,String.raw\`true\`,String.raw\`\`]; } else { adminmessages[${currNum}] = [String.raw\`${br[0]}\`,String.raw\`${br[1]}\`,String.raw\`false\`,String.raw\`\`]; } } `);
额外注意事项
- 如果你
br数组的元素中本身包含反斜杠\,需要提前对br元素内的反斜杠做二次转义,避免模板字符串解析时自动消耗掉反斜杠,导致String.raw拿到的内容不符合预期。 - 你原代码中的
"是HTML实体编码,如果你是直接在JS文件中写这段代码,直接替换为普通双引号"即可,如果是写在HTML的<script>标签内,保留实体编码也可以正常运行。
内容的提问来源于stack exchange,提问作者CoderPro1000
相关产品推荐
相关产品推荐

