【问题标题】:Eval-ing a function评估函数
【发布时间】:2011-10-19 14:54:17
【问题描述】:

我正在尝试创建一个小型库,您可以发送一个对象(具有函数)和一些数据和 args,它会将对象、数据和 args 发送给一个工作进程,然后该工作进程将评估该对象重构函数(从字符串到函数)

目前我有这个:

JSON.stringify(object, function(key, val) { if typeof val === 'function' { return val + '' } return val });

这个函数将字符串化一个包含函数的对象。

在我的工作人员中,我正在尝试撤消此过程。

我尝试了以下方法: eval(object) 我也尝试过实现 JSON.parse,并在遇到一个函数时尝试 eval() 每个函数。

我也试过eval("return " + object.function)

这可能吗?

【问题讨论】:

  • 使用 eval 几乎总是一个坏主意。
  • 你想达到什么目的?我的意思是这个问题背后的问题。
  • 我正在尝试在网络工作者之间分配计算。但很多时候,直到我需要计算的那一刻,我才知道计算是什么。
  • 你最好在master和worker中都需要你的计算库,只需将计算函数的名称传递给worker。然后,您可以通过 calcLibrary[funcName](); 在 worker 中执行 calc 函数
  • @Jeff 这个图书馆是公开的吗?

标签: javascript browser node.js eval web-worker


【解决方案1】:

你可能想要:

eval("(" + object.function + ")");

你不能把return语句放在某个地方。

function() {} 被评估为一个函数 declaration,因为它没有名称而失败。由于要解析的数据代表一个函数表达式,比如var f = function() {},所以你需要在它周围加上(),这样它就被当作一个表达式求值了。

【讨论】:

  • 谢谢。正是我想要的。
猜你喜欢
  • 2016-08-14
  • 2019-05-23
  • 1970-01-01
  • 2015-12-01
  • 2018-07-31
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多