动态执行JS
在js中如何把一个字符串当成js运行,即动态执行js
动态执行JS
实现方案:
一:eval
二:setTimeout
三:Script标签
四:Function
效果演示:

eval:
eval:eval是一个全局的内置函数,接收一个字符串,并将其作为一个JavaScript来执行。
执行顺序:同步执行
作用域:局部,当在全局和局部同时存在相同变量名时,访问的是局部的变量
使用方法:
eval("1+1/2");演示代码:
<body>
<textarea placeholder="请输入" id="formula"></textarea>
<div class="val" id="val">运行结果:</div>
<button onclick="computedValue()">计算</button>
</body>
<script>
const valElement = document.getElementById("val");
const formulaElement = document.getElementById("formula");
function computedValue () {
if (!formulaElement.value) return;
valElement.innerText = `运行结果:${eval(formulaElement.value)}`
}
</script>setTimeout:
setTimeout:它是一个定时器,同时接收两个参数,第一个参数可以是函数也可以是字符串,如果第一个参数内容为string则会被eval当JavaScript执行,第二个参数是延迟时间,单位毫秒。
执行顺序:异步
作用域:全局
使用方法:
setTimeout("alert('1')", 0)
Script标签:
script:用于在 HTML 文档中嵌入 JavaScript 代码
执行顺序:同步
作用域:全局
使用方法:
const scriptNode = document.createElement("script");
scriptNode.innerHTML = "alert('蛤')";
document.body.appendChild(scriptNode);Function:
function:函数是一种可重复使用的代码块,用于执行特定的任务等。
执行顺序:同步
作用域:全局
使用方法:
const fn = new Function("alert('蛤')");
fn();以上便是动态执行JS的方法,如果您有不同见解或是内容有舞蹈,欢迎在下方评论区留言讨论。
