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

时间:2016-02-25 02:24:13

标签: javascript eval

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

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

然后我需要将其添加到这样的函数中,例如。 “function(x,y,z){return(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在尝试生成新块时崩溃/冻结。

如何将带有javascript代码的字符串转换为函数中的代码?

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

1 个答案:

答案 0 :(得分:1)

我在发布此内容后30秒发现答案,使用function()构造函数。

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

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