2016-02-25 23 views
0

代碼的一部分my生成一個字符串,然後假設函數使用該字符串在VoxelJS中生成一個卡盤。JavaScript - 將字符串變量傳遞給eval

一個例子的字符串是 「(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在嘗試生成新塊時崩潰/凍結。

如何以javascript代碼將字符串轉換爲函數中的代碼以我想要的方式進行編碼?

我意識到這可能是一個難以理解的問題,對此抱歉,我不確定如何用其他方式來描述它。

+1

你'eval'功能應該有工作,除非'eval'不是'eval'。當然,如果該函數經常被稱爲*,它可能會很慢。 – Bergi

+0

@Bergi是啊,它被稱爲每秒數百次,所以它可能只是非常緩慢 –

回答