JavaScript - 将字符串变量传递给 eval

标签 javascript eval

部分代码生成一个字符串,然后假设函数使用该字符串在 VoxelJS 中生成卡盘。

示例字符串为“(y == 1)? 1 : 0”

然后我需要将其添加到这样的函数中,例如。 “函数(x,y,z){返回(y == 1)?1:0}”

我认为使用 eval 会将我的字符串更改为所需的代码,如下所示:

gtest = function(x, y, z){return eval(generationString) };

但我误解了 eval 的使用方式,并意识到我需要尝试其他方法。

如果我在 JavaScript 控制台中查看 gtest ,它会说它的结构是 function (x, y, z){return eval( GenerationString) } 当我想要它时看起来像 function (x, y, z){return return (y == 1)? 1 : 0}}。尝试传递包含 eval 的代码会导致 VoxelJS 在尝试生成新 block 时崩溃/卡住。

如何按照我想要的方式将带有 javascript 代码的字符串转换为函数中的代码?

我意识到这可能是一个难以理解的问题,对此感到抱歉,我不知道如何以其他方式描述它。

最佳答案

我在发布这篇文章后 30 秒找到了答案,使用 function() 构造函数。

Given a string describing a Javascript function, convert it to a Javascript function

gtest = new Function('x', 'y', 'z', 'return ' + generationString);

关于JavaScript - 将字符串变量传递给 eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35617069/

相关文章:

javascript - 如何使用 jquery 在 TR 中的单击事件上自动求和 TD 值

python - 为什么我可以从 'print' 调用 'eval'

javascript - 获取与字符串值同名的变量的值

python - 如何在 python 中避免使用 eval

python - 在字符串上使用 eval 会引发错误。

python - 如何编写和阅读日期时间词典

javascript - scope.$destroy 未被触发

使用默认运算符的 Javascript 引用错误

Javascript API : Function outside of scope

javascript - 跨域但控制两个域 : Set the height of an iframe per it's contents?