2013-04-17 17 views
2

我有一個變量爲什麼我的全局變量在我的JavaScript文件的縮小版中未定義?

var globalValue = 700; 

我aScript.js腳本文件的頂部聲明,這個變量是被另一個功能機能缺失()在同一個文件進行訪問。

雖然一切工作正常,當我縮小腳本文件時,aFunction()中的globalValue的值是未定義的。

任何想法爲什麼會發生這種情況?

+0

只是在聲明前做';'。這可能是它追加的前一個文件沒有正確結束。這將確保您的聲明獨立於以前的代碼行。 – karthikr

+0

@karthikr那會怎麼樣?你知道爲什麼發生這種情況嗎? – neuDev33

+1

您使用的是什麼縮小器?可以向我們展示縮小代碼的相關部分嗎? – Halcyon

回答

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" /> 

它現在都工作正常。

這就是所有混亂的原因。感謝您的建議和幫助。

0

Here解釋了同樣的問題。您將globalValue定義爲全局變量。但是,當你精縮代碼,aFunction()函數中也定義爲globalValue局部變量(也許是因爲minifier的),這樣的:

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

我們不知道這是否是他的問題。 (可能不會,因爲他在非縮小代碼中會看到同樣的問題)。 –

+0

他說'雖然一切工作正常,當我縮小腳本文件時,aFunction()中的globalValue的值是未定義的。所以問題發生在minifing之後。 – Ikrom

+0

當然,但它不會這樣做。YUI縮小不會將隨機變量插入到他的函數中。 –

0

值得期待通過縮小的版本報關行。我懷疑發生了什麼事情是縮小器有用地縮短了聲明中的變量名稱(類似於_a1),但並未替換函數中所有globalValue的出現。

我以前見過這種類似的縮小器,但恐怕我從來沒有深究爲什麼 - 而是在網上發現了一個正確縮小版本的腳本。

相關問題