管理杂谈OA答疑ERP答疑教程搜索

【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');


更多精彩文章浏览...
点击右上角图标分享到朋友圈
官方网站:http://www.clicksun.cn
咨询热线:400-186-1886
服务邮箱:service@clicksun.cn