为什么我的全局变量在我的javascript文件的缩小版本中未定义?

时间:2013-04-17 17:56:09

标签: javascript minify

我有一个变量

var globalValue = 700; 

在我的aScript.js脚本文件的顶部声明,该变量由同一文件中的另一个函数aFunction()访​​问。

虽然一切正常但是当我缩小我的脚本文件时,aFunction()中的globalValue值是未定义的。

知道为什么会这样吗?

3 个答案:

答案 0 :(得分:2)

我在这里找到了罪魁祸首。另一个脚本文件有一个错误(我无法控制,因为它是由其他人编写的内部脚本),我们现在忽略了它,因为它非常微不足道。

我宣布缩小文件的顺序是 -

<JavaScriptFiles Include= "Scripts/theScriptWithError.js" />
<JavaScriptFiles Include= "Scripts/aScript.js" />

现在,由于ScriptWithError.js中的错误,它没有从aScript.js加载我的变量。我移动了订单以便

<JavaScriptFiles Include= "Scripts/aScript.js" />
<JavaScriptFiles Include= "Scripts/theScriptWithError.js" />

现在一切正常。

这就是所有混乱的原因。感谢您的建议和帮助。

答案 1 :(得分:0)

Here解释了同样的问题。您将globalValue定义为全局变量。但是当您缩小代码时,在aFunction()函数中,您还将globalValue定义为局部变量(可能是因为缩小器),如下所示:

var globalValue = 700;
function aFunction() {
  var globalValue;
  alert(globalValue); // undefined
}
aFunction();

答案 2 :(得分:0)

值得查看声明行的缩小版本。我怀疑正在发生的事情是minifier有助于缩短声明中的变量名称(类似于_a1),但没有替换aFunction中所有出现的globalValue。

我之前用类似的缩放器看过这个,但我担心我从来没有找到原因的底部 - 而是我在网上发现了一个正确缩小版本的脚本。