javascript - 如何调用定义为字符串的函数?

标签 javascript function eval

我想在数据库记录中定义函数和脚本,然后使用 Javascript 将数据库字段从字符串转换为代码。

我在想我可以使用“eval”,但这似乎不起作用。

举个例子:

    var strTest = "function(strParams) { alert('hello: ' + strParams); };"
       ,fn = eval(strTest);
    fn("World");

这是行不通的,eval 返回未定义,希望这能说明我正在努力实现的目标。

最佳答案

问题是 eval 将您的函数解析为函数声明。但是函数声明需要一个名称。

相反,您应该使它成为一个不需要函数表达式的函数表达式。

var strTest = "(function(strParams) { alert('hello: ' + strParams); })";
eval(strTest)("World");

仅当您信任该字符串时才这样做。

或者,您可能对 Function 构造函数感兴趣:

var f = Function("strParams", "alert('hello: ' + strParams)");
f("World");

关于javascript - 如何调用定义为字符串的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34514654/

相关文章:

JavaScript HTML - 按内容优化页面上的项目

javascript - webgl纹理图像源更新

javascript - 如何在 javascript 中捕获所有 ajax 请求?

javascript - 调用javascript函数的正确方法

java - Java 中 eval() 解析器和二维数组的实现

javascript - 主干 listenTo 不会因属性更改而触发

python - python函数算法库

javascript - 在 React 的组件构造函数中传递函数

javascript - 为什么 `eval` 对非字符串有效?

javascript - 使用递归函数解决了 : How to implement build in function . eval()