从String(纯JS)执行JavaScript代码

Execute JavaScript code from String (pure JS)

本文关键字:执行 JavaScript 代码 JS String      更新时间:2023-09-26

我知道,SO上已经有类似的主题,答案通常是"你可以使用eval(),但不应该这样做"。答案很好,但无论如何eval()并不能解决我的问题。假设我有一个名为string_code:的String变量

var GLOBAL_TEST= 'it works';
alert(GLOBAL_TEST);

现在我需要执行它。注意,它还应该定义GLOBAL_TEST,这样以后就可以使用了。使用jQuery,我这样做:

$('body').append('<script>'+string_code+'</script>');

现在,如何在纯JS中做到这一点?

非常简单地创建<script>元素并设置其innerHTML属性,然后将其附加到主体:

var s;
s = document.createElement('script');
s.innerHTML = 'alert("works");';
//or in your case
//s.innerHTML = string_code;
document.body.appendChild(s);

请注意,这通常被认为是一种糟糕的做法,动态添加脚本通常是用外部脚本按照以下行完成的:

var s;
s = document.createElement('script');
s.src = 'path/to/script.js';
s.onreadystatechange = s.onload = function () {...};
document.getElementsByTagName('head')[0].appendChild(s);