将字符串转换为函数,给出ReferenceError

时间:2019-01-06 16:32:29

标签: javascript

我需要调用一个函数,但它是以字符串形式给出的(本来它要复杂得多,并且包含更多嵌套的m()函数。):

"m('p', {class:'red'}, 'text')"

该函数本身是NPM软件包,它是通过const m = require('mithril')导入的。当我尝试使用进行转换时,

Function("m('p', {class:'red'}, 'text')")

...控制台显示ReferenceError: m is not defined

据我了解,当我使用Node.JS运行本地服务器时,它是一个不同的JS环境,而当我调用Function()时,它来自一个不同的环境。因此,它无法识别以前声明的变量。

现在,原始问题非常复杂且难以描述。我问了一个先前的问题,我在其中详细描述了问题的整体情况: Evaluate a function call given as a string, which was declared with 'require'

有什么办法解决吗?

1 个答案:

答案 0 :(得分:2)

要在该代码字符串中使用函数m,您需要将其作为参数传递给函数:

const m = require(...);
const f = new Function("m", "m('p', {class:'red'}, 'text')");
f(m);