是否可以将函数存储为字符串形式并在调用字符串后调用它?

时间:2019-07-13 06:32:23

标签: javascript java

为了更加清楚,我将要执行的操作放在代码中。

var functionsafe = "function plus(a,b){c=a+b; return c}";

我们可以直接调用函数add()= functionsafe;

我想知道是否有可能做到这一点的语言。这是受SQL注入攻击方法启发的,该方法意味着将一些代码注入SQL以弄乱数据库,这使我思考是否有可能对通用代码执行此操作,即在执行时修改代码。 听起来很疯狂,因为代码需要通过编译器才能被计算机识别,但是请想象是否有可能使用类似的技术进行机器学习。请告诉我是否以及为什么不可能这样做。

1 个答案:

答案 0 :(得分:0)

JavaScript中最接近的是eval函数。语法不能完全按照您的建议工作,但是功能非常接近。

如果您进行如下小改动(加上括号):

var functionsafe = "(function plus(a,b){c=a+b; return c})";

然后您可以像这样调用函数:

eval(functionsafe)(2, 3)

哪个会给您结果5

但是,通常不赞成使用eval函数。 (请参见此处:https://www.sitepoint.com/call-javascript-function-string-without-using-eval/