Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript eval和googleclosure编译器存在问题_Javascript_Eval_Google Closure Compiler - Fatal编程技术网

Javascript eval和googleclosure编译器存在问题

Javascript eval和googleclosure编译器存在问题,javascript,eval,google-closure-compiler,Javascript,Eval,Google Closure Compiler,我正在使用google closure压缩我的代码,但以下代码行有问题: eval('this.find(\''+ element_to_append_the_controller+ '\').'+controller_to_load+'(options_for_controller)'); 我必须使用eval,因为我必须在元素上执行的方法(controller\u to\u load)是可变的,并且取决于我得到的参数 我的问题是,我必须将一个对象传递给该方法,因此我将其作为变

我正在使用google closure压缩我的代码,但以下代码行有问题:

        eval('this.find(\''+ element_to_append_the_controller+ '\').'+controller_to_load+'(options_for_controller)');
我必须使用eval,因为我必须在元素上执行的方法(
controller\u to\u load
)是可变的,并且取决于我得到的参数

我的问题是,我必须将一个对象传递给该方法,因此我将其作为变量名的字符串表示(
options\u for\u controller
),但是闭包将更改该名称,并且不会更改我的eval字符串中的变量名

我的解决办法是:

  • 将变量名动态获取为字符串
  • 正在将对象(使用回调函数)解析为字符串
  • 禁用压缩这些代码行
但我如何才能做到其中一个,或者有其他解决方案吗

谢谢


AKA不使用eval。

一些程序员使用eval是因为他们没有意识到可以编写
eval('a.+b)
而不是编写
a[b]

试试这个而不是你的评估()


谢谢,你说的对,用这种动态执行取代了所有的eval,太棒了。
this.find(element_to_append_the_controller.toString())[controller_to_load](options_for_controller)
this.find(element_to_append_the_controller.toString())[controller_to_load](options_for_controller);