JavaScript ECMA-262重写eval函数

时间:2014-02-05 01:05:28

标签: javascript

我使用的是使用OpusScript(一种ECMA-262 JS)的软件工具(Opus Pro-Digital Workshop-UK)。我已经创建了一个eval函数,不确定如何创建结果。它工作正常,但有很多在线提到使用eval函数的问题。所以,我发布了这个函数,并希望在没有eval的情况下重新编写它,如果可能的话:

//len = 36 //puzzle pieces-F1-F36
    function combiner10(len){
    s200 = new Array(214,401,607,791,977,1132,1140,1141,1142,1143,1146,1057,916,760,611,465,312,175,75,77,77,77,77,65,186,364,631,837,1035,1067,218,219,223,220,1158,1152);
    s300 = new Array(56,58,63,67,66,69,208,320,463,565,647,704,704,704,702,701,699,701,703,581,457,328,202,74,694,700,698,696,701,697,566,448,335,201,533,374);
    for (var i=1;i<=len;i++)
          eval("F"+i+".SetPosition(s200[i-1],s300[i-1])");
    }

我是脚本编写的新手。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我认为你根本不需要在这里使用eval()

将您的碎片放入一个数组中,而不是名为F1-F36的变量,只需使用包含每个碎片的数组即可。然后你可以这样做:

var pieces = [puzzle pieces F1-F36 in this array];   // F1 in the 0 position

function combiner10(len){
    var s200 = [214,401,607,791,977,1132,1140,1141,1142,1143,1146,1057,916,760,611,465,312,175,75,77,77,77,77,65,186,364,631,837,1035,1067,218,219,223,220,1158,1152];
    var s300 = [56,58,63,67,66,69,208,320,463,565,647,704,704,704,702,701,699,701,703,581,457,328,202,74,694,700,698,696,701,697,566,448,335,201,533,374];
    for (var i = 0; i < len; i++) {
          pieces[i].SetPosition(s200[i],s300[i]);
    }
}

此外,应在其前面用var声明局部变量。