我正在尝试将JavaScript函数存储在数据库中。数据库中的每一行将具有不同的功能。根据调用的行,特定功能将在浏览器中执行。

一些澄清:我不试图在服务器上执行该功能。它将仅存储在服务器上并提取到客户端,并且将像其他任何javascript函数一样执行。

首先,我的问题是,这可能吗?我一直在阅读javascript允许将函数存储在变量中,所以我想为什么不将其存储在数据库中。这将使我能够自由执行基于行的其他功能。

其次,我一直收到此错误:

>a=cell._cell.row.data.jsfunction
"function toCelsius(fahrenheit) {
  return (5/9) * (fahrenheit-32);
}"
>a()
VM435:1 Uncaught TypeError: a is not a function
    at eval (eval at cellClick (empRead.html:14), <anonymous>:1:1)
    at t.cellClick (empRead.html:21)
    at w.edit (tabulator.min.js:6)
    at HTMLDivElement.<anonymous> (tabulator.min.js:6)


这是一个简单的华氏转摄氏度的功能。恐怕它会将变量视为字符串。但是接下来要讲的是,我希望将其视为一个函数。是否有解决方法来实现它。

谢谢

最佳答案

变量只是表示值的一种手段。

JavaScript支持许多不同种类的值,包括数字,字符串,数组和函数。

要将某些内容存储在数据库中,您必须将其表示为数据库可以理解的一种值。我不知道任何支持“ JavaScript函数”作为数据类型的数据库。

相反,您需要以数据库可以理解的格式存储某种形式的数据表示形式。

例如,该函数的源代码,您可以随后在客户端上eval(这似乎是您正在尝试的操作,但是您忘记了eval部分)。这会打开一整罐蠕虫,通常不建议这样做。

通常,最好的方法是将一堆预定义函数作为客户端JS程序的一部分(可能组织为对象的属性),然后将标识符存储在数据库中(例如,属性名称)。

然后,您可以这样:

my_trusted_functions[cell._cell.row.data.jsfunction]();

关于javascript - JavaScript:函数与变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54076055/

10-14 14:35
查看更多