我有一個變量爲什麼我的全局變量在我的JavaScript文件的縮小版中未定義?
var globalValue = 700;
我aScript.js腳本文件的頂部聲明,這個變量是被另一個功能機能缺失()在同一個文件進行訪問。
雖然一切工作正常,當我縮小腳本文件時,aFunction()中的globalValue的值是未定義的。
任何想法爲什麼會發生這種情況?
我有一個變量爲什麼我的全局變量在我的JavaScript文件的縮小版中未定義?
var globalValue = 700;
我aScript.js腳本文件的頂部聲明,這個變量是被另一個功能機能缺失()在同一個文件進行訪問。
雖然一切工作正常,當我縮小腳本文件時,aFunction()中的globalValue的值是未定義的。
任何想法爲什麼會發生這種情況?
我在這裏找到了罪魁禍首。另一個腳本文件有一個錯誤(我無法控制,因爲它是由其他人編寫的內部腳本),我們此刻忽略了這個錯誤,因爲它非常微不足道。
中,我曾宣佈文件縮小文件大小順序爲 -
<JavaScriptFiles Include= "Scripts/theScriptWithError.js" />
<JavaScriptFiles Include= "Scripts/aScript.js" />
所以,現在,因爲在theScriptWithError.js錯誤的,它不是從aScript.js加載我的變量。我移動的訂單,以便
<JavaScriptFiles Include= "Scripts/aScript.js" />
<JavaScriptFiles Include= "Scripts/theScriptWithError.js" />
它現在都工作正常。
這就是所有混亂的原因。感謝您的建議和幫助。
Here解釋了同樣的問題。您將globalValue
定義爲全局變量。但是,當你精縮代碼,aFunction()
函數中也定義爲globalValue
局部變量(也許是因爲minifier的),這樣的:
var globalValue = 700;
function aFunction() {
var globalValue;
alert(globalValue); // undefined
}
aFunction();
我們不知道這是否是他的問題。 (可能不會,因爲他在非縮小代碼中會看到同樣的問題)。 –
他說'雖然一切工作正常,當我縮小腳本文件時,aFunction()中的globalValue的值是未定義的。所以問題發生在minifing之後。 – Ikrom
當然,但它不會這樣做。YUI縮小不會將隨機變量插入到他的函數中。 –
值得期待通過縮小的版本報關行。我懷疑發生了什麼事情是縮小器有用地縮短了聲明中的變量名稱(類似於_a1),但並未替換函數中所有globalValue的出現。
我以前見過這種類似的縮小器,但恐怕我從來沒有深究爲什麼 - 而是在網上發現了一個正確縮小版本的腳本。
只是在聲明前做';'。這可能是它追加的前一個文件沒有正確結束。這將確保您的聲明獨立於以前的代碼行。 – karthikr
@karthikr那會怎麼樣?你知道爲什麼發生這種情況嗎? – neuDev33
您使用的是什麼縮小器?可以向我們展示縮小代碼的相關部分嗎? – Halcyon