【JavaScript】动态执行js的方法
如何创建一个函数,将一个字符串当作代码执行!!!
1、eval 方法
特点:同步;作用域是当前运行的作用域。
var log = '全局----我是动态执行的js打印';
function exec (code) {
var log = '局部----log我是动态执行的js打印';
eval(code);
}
exec("console.log(log)");
console.log('sync');

2、setTimeout
特点:setTimeout 第一个参数是可以传字符串的,它会自动的将字符串当作代码来运行;异步;作用域是全局作用域,不受当前作用域影响。
var log = '全局----我是动态执行的js打印';
function exec (code)
{
var log = '局部----log我是动态执行的js打印';
setTimeout(code);
};
exec("console.log(log)");
console.log('sync');

3、创建 script 标签,添加到页面
特点:会产生一个 script 元素;同步;作用域是全局作用域,不受当前作用域影响。
var log = '全局----我是动态执行的js打印';
function exec (code)
{
var log = '局部----log我是动态执行的js打印';
const script = document.createElement("script");
script.innerHTML = code;
document.head.appendChild(script);
}
exec("console.log(log)");
console.log('sync');

4、Function 方法
特点:同步;作用域是全局作用域,不受当前作用域影响,并且不会产生新元素。
***函数都是 function 的实例,在实例中的构造函数的最后一个参数可以作为它的函数体进行执行。***
var log = '全局----我是动态执行的js打印';
function exec (code)
{
var log = '局部----log我是动态执行的js打印';
new Function(code)();
}
exec("console.log(log)");
console.log('sync');
