如何告诉Google封闭编译器不删除var

时间:2016-01-07 17:03:39

标签: javascript google-closure-compiler

我有以下代码:

// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// ==/ClosureCompiler==

var l = window.location;
var s = 'hash';
l[s] = 'whatever i need now';

使用谷歌闭包编译器(高级模式)编译,如下所示:

window.location.hash="whatever i need now";

但在这种情况下,我真的需要它继续在编译代码中使用l[s]= ...

有没有办法告诉编译器继续使用var或忽略几行?

Compiler in action - demo

1 个答案:

答案 0 :(得分:3)

  

使用junos脉冲使哈希函数正常工作是一个小小的攻击。<​​/ p>

我很难相信黑客是必要的,但是:

// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// ==/ClosureCompiler==

eval(
"var l = window.location;\n" +
"var s = 'hash';\n" +
"l[s] = 'whatever i need now';\n"
);

* hack * * cough * : - )

或者:

// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// ==/ClosureCompiler==

sessionStorage.x = "hash";
window.location[sessionStorage.x] = 'whatever i need now';