javascript - javascrip 怎么执行字符串里面的函数

查看:96
本文介绍了javascript - javascrip 怎么执行字符串里面的函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

昨天突然想到,js里面,这种情况

var aa='console.log(123)';

代码就是上面这样,有什么方法可以让字符串里面的函数执行?推荐使用什么方法?

解决方案

首先回答楼主,使用Function构造会比直接使用eval好一些:

var str = 'console.log(123)';
var fn = Function(str);
fn();

eval这个关键字不建议使用,个中原因在秘密花园也有解释
http://bonsaiden.github.io/Ja...

不过花园中只一再提到不要使用eval,并且给了以下示范:

var foo = 1;
function test() {
    var foo = 2;
    eval('foo = 3');
    return foo;
}
test(); // 3
foo; // 1

但却没有给出解决方案,我个人推荐做法,就是通过构造函数为‘期望执行的代码’创建新的函数作用域,尽可能减少对当前作用域的影响/污染

var foo = 1;
function test() {
    var foo = 2;
    (Function('foo = 3'))();//
    return foo;
}
test(); // 2
foo; // 1

有其他解决方案也可以继续交流

这篇关于javascript - javascrip 怎么执行字符串里面的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆