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

Why would my global variable be undefined in the minified version of my javascript file?

本文关键字:我的 未定义 版本 缩小 javascript 文件 为什么 全局变量      更新时间:2023-09-26

我有一个变量

var globalValue = 700; 

声明在我的javascript .js脚本文件的顶部,这个变量正在被同一文件中的另一个函数function()访问。

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

知道为什么会发生这种情况吗?

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

我声明最小化文件的顺序是-

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

所以现在,因为在scriptwitherror .js中的错误,它没有从script .js加载我的变量。我移动了顺序,所以

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

现在一切正常。

那就是所有混乱的原因。谢谢你的建议和帮助。

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

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

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

我以前见过类似的缩小版本,但我恐怕从来没有找到原因的底部-而是我在网上找到了一个正确的缩小版本的脚本