【发布时间】:2018-11-16 15:02:09
【问题描述】:
我正在寻找一种将函数中的变量替换为其实际值的方法。我打算将此函数转换为字符串并通过 HTTP 请求发送,因此需要将函数内部的变量与其值进行转换。
let x = Math.random();
let funcString = function () {
let y = x + 10;
return y;
}.toString();
// Send funcString as a parameter
例如。在上面的代码中,如果我按原样发送funcString,那么接收它的人将不知道x 的值是什么。
因为我最终要发送一个字符串,所以我想发送
"function () {let y = 0.53 + 10; return y;}"(假设Math.random()在运行时产生 0.53)。
有没有办法做到这一点?
我在 nodejs 项目中这样做,所以我也可以使用 npm 模块。
【问题讨论】:
-
只发送一个包含所有当前变量值的对象可能会更有效(也是更好的做法)。即,发送
{functionBody: "...", vars: {x: 0.53}}。这样您就不必在函数中进行字符串替换,也不必担心注入、语法错误等问题。 -
你为什么要这样做? y 的值是确定的,为什么不只发送值呢?
-
我还要回答为什么要这样做而不是发送 result 的问题?当您拥有当前上下文中的所有信息时,将函数发送到其他地方进行评估有什么好处?通常,如果您确实需要在不同的上下文中计算某些东西,您发送参数而不是算法。
-
我正在使用 Highcharts 的导出服务器来生成图表,因此我需要发送自定义函数。 export.highcharts.com
-
@SayakMukhopadhyay 但我没有看到发送任何字符串。有参数和回调。您是否尝试将字符串作为回调而不是实际函数传递?
标签: javascript string variables tostring