使用ExecJS传递参数

时间:2014-01-14 09:20:44

标签: javascript ruby-on-rails ruby execjs

我需要在Rails 4应用程序中执行javascript函数。我尝试了以下ExecJS(https://github.com/sstephenson/execjs),但没有取得任何成功:

my_js_function = 'function my_function(a){var b=a.split("$");var c="";for(i=0;i<=b.length-1;i++){if(!(i%2)){c+=b[i]}}var b=c.split("");c="";for(i=0;i<=b.length-1;i++){if(i%2){c+=b[i]}}return c}'
compiled_function = ExecJS.compile(my_js_function)
result = compiled_function.call(my_argument)

原始JS函数接受一个参数(my_argument),我不知何故需要传递给它。任何有关如何做到这一点的帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

你很亲密。您不应该使用call,您应该以这种方式使用eval

my_js_function = 'function my_function(a){var b=a.split("$");var c="";for(i=0;i<=b.length-1;i++){if(!(i%2)){c+=b[i]}}var b=c.split("");c="";for(i=0;i<=b.length-1;i++){if(i%2){c+=b[i]}}return c}'
compiled_function = ExecJS.compile(my_js_function)
compiled_function.eval('my_function("heyhey")')
#=> ehy