Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 如何防止闭包编译器在全局名称空间中创建特定的变量名?_Javascript_Global Variables_Minify_Google Closure Compiler - Fatal编程技术网

Javascript 如何防止闭包编译器在全局名称空间中创建特定的变量名?

Javascript 如何防止闭包编译器在全局名称空间中创建特定的变量名?,javascript,global-variables,minify,google-closure-compiler,Javascript,Global Variables,Minify,Google Closure Compiler,我熟悉使用字符串文本和导出来防止闭包重命名变量的概念,但如何防止闭包使用其他代码(我没有编写)用作全局变量的变量名 下面的示例是为闭包的成员函数创建的: function $() { var a; if(1 > N) { return-1 } a = Math.pow(1 + Q, F); return ..... } 当jQuery被加载时,上面的内容会被删除 我正在使用命令行编译器,这是我的命令行: java-jar compiler.ja

我熟悉使用字符串文本和导出来防止闭包重命名变量的概念,但如何防止闭包使用其他代码(我没有编写)用作全局变量的变量名

下面的示例是为闭包的成员函数创建的:

  function $() {
  var a;
  if(1 > N) {
        return-1
  }
  a = Math.pow(1 + Q, F);
  return .....
  }
当jQuery被加载时,上面的内容会被删除

我正在使用命令行编译器,这是我的命令行:

java-jar compiler.jar——编译级高级优化——格式化=pretty\u print——输出包装PGS——js common.v2.0.raw.js——模块common\u min:1——js页面\u code.raw.js——模块页面\u code\u min:1:common\u min

我以为
output\u wrapper
选项是用来解决这个问题的,但我要么误解了它的用途,要么误用了它

TIA.

答案是

外部代码定义外部代码中的符号。它们有两个主要目的:

  • 提供外部符号的定义和类型信息,以便您的代码可以在没有错误/警告的情况下调用它们
  • 防止编译器使用在代码之外定义的符号名

在您的例子中,您可以为jQuery包含一个现有的extern。中的每个主要版本都有一个。

谢谢。我误解了,
externs
仅用于防止在缩小的代码中重命名对外部库的函数调用。因为被缩小的代码不包括对jQuery代码的调用,所以我认为没有必要包含外部定义。我还使用FancyBox、HighCharts及其导出模块。如果我找不到这些库的
extern
文件(我还没有找到),那么我想我要么坚持创建自己的,要么不应该使用
ADVANCED\u OPTIMIZATIONS
选项。对吗?你是对的。虽然只是保留一个符号名,但外部可以是非常基本的。类似于
var librarynamespace={}非常有效。不需要完整的定义。