javascript - `"\n "` 可以 't run in ` new Function()`

标签 javascript function

我想动态运行代码,而不使用 <script> ,所以我用了new Function ,但是当我写 \n 时出现问题:

function run (code) {
    (new Function(code))()
}

run('console.log("run well")') // it work well
run('console.log("\nError")')  // error

结果是: error

Uncaught SyntaxError: Invalid or unexpected token
at new Function (<anonymous>)
at run (<anonymous>:2:3)
at <anonymous>:1:1

我们可以在控制台中找到原因:'\n'已换行

(function() {
  console.log("    // error here
  Error")
})

所以用`替换"可以解决这个问题:

run(`console.log("\nWell")`)

(function() {
  console.log(`    // work here
  Error`)
})

但是在生产中使用`是不合适的,那么是否有其他方法可以让它很好地完成?

最佳答案

由于函数体是一个字符串,因此\n实际上会被转换为换行符。您需要使用 \\n 对其进行转义。

function run(code) {
  (new Function(code))()
}

run('console.log("run well")') // it work well
run('console.log("\\nError")') // error

关于javascript - `"\n "` 可以 't run in ` new Function()`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51128583/

相关文章:

javascript - 使用 Bootstrap Datepicker 选择月份日期范围和月份

javascript - CK 编辑器查找和替换仅在第一次时有效,然后它将在 range[0].setStart 函数中给出索引错误

javascript - 如何减少CSS中的填充?

javascript - 我对这个条件 "value || value"赋值的理解正确吗?

javascript - 我如何在网站上使用 http url fallback 制作跨浏览器 native 应用程序 url?

javascript - 加载后立即使表单无效

javascript - 转换为原始类型

javascript - Javascript 中的 OOP : questions about classes, 属性和构建器函数

php - 在每个函数调用 php 上执行一些东西

javascript - 在 window.onkeydown 事件中访问局部函数