ECMAScript的變量是松散類型的,即可以用來(lái)保存任何類型的數(shù)據(jù)滤灯。
var操作符定義的變量是該定義語(yǔ)句所在作用域的局部變量锨络。省略var定義的變量是全局變量。
未經(jīng)初始化的變量會(huì)保存undefined值日缨,初始化后的變量也只是保存一個(gè)值,并不會(huì)標(biāo)記數(shù)據(jù)類型掖看∠痪啵可以在修改值的同時(shí)修改數(shù)據(jù)類型。
用一條語(yǔ)句可以聲明和定義多個(gè)變量哎壳,用逗號(hào)分隔毅待,如
var name="Xiaoming",age=19;
或者:
var name="Xiaoming",
??? age=19;
在JS中定義全局變量的方法:1).在function外定義變量;2).不用var 聲明归榕,直接定義尸红,即隱式聲明全局變量(不推薦),這種方法即使在函數(shù)內(nèi)部定義刹泄,也為全局變量外里,但函數(shù)未執(zhí)行就未定義;3).用windows.variableName定義全局變量特石,調(diào)用時(shí)建議寫(xiě)上windows.variableName(也可不寫(xiě))盅蝗。
全局變量的優(yōu)點(diǎn):可減少變量個(gè)數(shù),可減少由于實(shí)際參數(shù)和形式參數(shù)的數(shù)據(jù)傳遞帶來(lái)的時(shí)間消耗姆蘸。
全局變量的缺點(diǎn):1).全局變量存儲(chǔ)在靜態(tài)存貯區(qū)墩莫,程序開(kāi)始運(yùn)行時(shí)為其分配內(nèi)存,程序結(jié)束時(shí)釋放內(nèi)存逞敷,與局部變量的動(dòng)態(tài)分配狂秦、動(dòng)態(tài)釋放相比,生存期較長(zhǎng)推捐,因此過(guò)多的全局變量會(huì)占用較多的內(nèi)存單元裂问。2).全局變量破壞了函數(shù)的封裝性能。函數(shù)就像一個(gè)黑匣子牛柒,一般通過(guò)函數(shù)參數(shù)和返回值進(jìn)行輸入輸出堪簿,函數(shù)內(nèi)部實(shí)現(xiàn)相對(duì)獨(dú)立。全局變量破壞了這種獨(dú)立性焰络,使函數(shù)對(duì)全局變量產(chǎn)生依賴,同時(shí)也降低了函數(shù)的可移植性符喝。3).全局變量降低代碼可讀性闪彼,由于多個(gè)函數(shù)都可能使用和改變?nèi)肿兞浚詫?duì)程序調(diào)試和查錯(cuò)很不利。