如何在Javascript中将参数传递给基于eval的函数 [英] How to pass parameters to an eval based function inJavascript

查看:52
本文介绍了如何在Javascript中将参数传递给基于eval的函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am storing function body in string with function name.

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执行函数主体.

After selecting the functionName from a drop down I use eval to execute function body.

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

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

I want to pass 'lim' to this execution or can I use functionName as initiating point for execution somehow?

推荐答案

使用函数构造函数

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

这篇关于如何在Javascript中将参数传递给基于eval的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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