我有一个变量
var globalValue = 700;
在我的aScript.js脚本文件的顶部声明,该变量由同一文件中的另一个函数aFunction()访问。
虽然一切正常但是当我缩小我的脚本文件时,aFunction()中的globalValue值是未定义的。
知道为什么会这样吗?
答案 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。
我之前用类似的缩放器看过这个,但我担心我从来没有找到原因的底部 - 而是我在网上发现了一个正确缩小版本的脚本。