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