编程语言
首页 > 编程语言> > 如何在Javascript中将参数传递给基于eval的函数

如何在Javascript中将参数传递给基于eval的函数

作者:互联网

我将函数体存储在带有函数名称的字符串中.

function fnRandom(lim){
    var data=[];
    for(var i=0;i<lim;i++)
    {
        data=data.concat(Math.floor((Math.random() * 100) + 1));
    }
return data;
}

从下拉列表中选择functionName之后,我使用eval执行函数主体.

JSON.stringify(eval(this.selectedFunction.body));

我想将“ lim”传递给此执行,还是可以将functionName用作执行的起始点?

解决方法:

使用Function构造函数

var body = "console.log(arguments)"

var func = new Function( body );
func.call( null, 1, 2 ); //invoke the function using arguments

具有命名参数

var body = "function( a, b ){ console.log(a, b) }"
var wrap = s => "{ return " + body + " };" //return the block having function expression
var func = new Function( wrap(body) );
func.call( null ).call( null, 1, 2  ); //invoke the function using arguments

标签:eval,parameter-passing,javascript
来源: https://codeday.me/bug/20191025/1927712.html