簡介
我想這是在我總結(jié)JavaScript系列中最為需要注意的,最為重要的內(nèi)容。你必須要去了解這些問題特性,才能準(zhǔn)備好應(yīng)對措施,這真的很重要。
毒瘤
全局變量
全局變量的存在的確是帶來了方便,但是我覺得JavaScript對于全局變量的依賴性已經(jīng)到達(dá)一種恐怖的狀態(tài)。如果某些全局變量的名稱碰巧和子程序中的變量名稱相同,那么它們就會相互沖突,可能導(dǎo)致程序無法執(zhí)行,而且不好調(diào)試。
文章中定義了三種定義全局變量的方式,分別是:
在任何函數(shù)之外放置一個var語句,這個和其他語言一樣:
var foo = value;
直接給全局對象添加一個屬性。如果是在Web瀏覽器里,全局變量為Window:
window.foo = value;
直接使用未經(jīng)處理的變量,這個稱為隱式的全局變量:
foo = value;
工作中遇見的普遍的錯誤應(yīng)該是第三種,這很普遍。
作用域
JavaScript并沒有實(shí)現(xiàn)作用域,因此代碼塊中聲明的變量在包含此代碼塊的函數(shù)的任何位置都是可見的。
所以,聲明變量最好的方式是每個函數(shù)的開頭部分聲明所有變量。