2

我有一个变量

var globalValue = 700; 

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

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

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

4

3 回答 3

2

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

我声明要缩小的文件的顺序是 -

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

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

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

现在一切正常。

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

于 2013-04-17T20:48:03.563 回答
0

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

var globalValue = 700;
function aFunction() {
  var globalValue;
  alert(globalValue); // undefined
}
aFunction();
于 2013-04-17T18:13:08.960 回答
0

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

我以前用类似的缩小器看到过这个,但恐怕我从来没有深入了解原因——而是我在网上找到了一个正确缩小的脚本版本。

于 2013-04-17T18:14:09.147 回答