我想动态运行代码,而不使用 <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/