我正面临以下一种情况,
function a() {
var $$ = this;
eval("some script");
}
使用具有简单级别的闭包编译器,它将在简化的输出中删除$$ var,但是脚本开发人员的代码“某些脚本”可能会使用此变量,因此无论如何都可以让闭包编译器保留var $$在输出?谢谢!
答案 0 :(得分:2)
从Solution: Export the Symbols You Want to Keep借用我建议您使用方括号表示法创建此变量。我假设您的全局元素是window
。
function a() {
window['$$'] = this;
eval("some script");
}
可能不漂亮,但this does work;
输出
function a() {
window.$$ = this;
eval("some script");
}
答案 1 :(得分:0)
不是真的。您也许可以找到一种解决方法,但是不能保证它可以在将来的编译器版本中使用。
您需要重新编写代码,以免利用这样的eval。
答案 2 :(得分:0)
var a = new Function('var $$ = this; eval("some script");');
如果要避免转义“某些脚本”的内容,可以将其作为参数传递:
var a = new Function('script', 'var $$ = this; eval(script);');
这将所需的局部变量排除在编译器分析之外。