From 教程 http://code.google.com/closure/compiler/docs/api-tutorial3.html:
如果...您发现闭包编译器正在删除您想要保留的函数,有两种方法可以防止这种情况:
* 将函数调用移至闭包编译器处理的代码中。
* 导出您想要保留的符号。
您可能想要第二个,即在这里讨论 http://code.google.com/closure/compiler/docs/api-tutorial3.html#export,但基本上归结为明确将其设置为window
财产:
function foo() {
}
window['foo'] = foo;
对于您的 JS1k 提交,您只需保留最后一行即可,因为它是不需要的。请注意,闭包仍然会重命名该函数,但当它开始使用名称重命名您的符号时a
从那里继续,你不太可能出名longer全面的。
你可以尝试一下在线编译服务 http://closure-compiler.appspot.com/home。如果您将其粘贴到:
// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @output_file_name default.js
// ==/ClosureCompiler==
// ADD YOUR CODE HERE
function hello(name) {
alert('Hello, ' + name);
}
hello('New user');
...编译结果是
alert("Hello, New user");
但如果你添加
window['hello'] = hello;
...到最后,编译结果为:
function a(b){alert("Hello, "+b)}a("New user");window.hello=a;