为了更加清楚,我将要执行的操作放在代码中。
var functionsafe = "function plus(a,b){c=a+b; return c}";
我们可以直接调用函数add()= functionsafe;
我想知道是否有可能做到这一点的语言。这是受SQL注入攻击方法启发的,该方法意味着将一些代码注入SQL以弄乱数据库,这使我思考是否有可能对通用代码执行此操作,即在执行时修改代码。 听起来很疯狂,因为代码需要通过编译器才能被计算机识别,但是请想象是否有可能使用类似的技术进行机器学习。请告诉我是否以及为什么不可能这样做。
答案 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/)