javascript中錯(cuò)誤使用var造成undefined
在javascript中根據(jù)變量作用的范圍不同分為局部變量和全局變量,直接定義的變量是全局變量,全局變量可以被所有的腳本訪問(wèn);在函數(shù)中定義的變量是局部變量,局部變量只在函數(shù)內(nèi)有效。
如果全局變量和局部變量使用相同的變量名,則局部變量將會(huì)覆蓋全局變量。
例子代碼:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>js中全局變量與局部變量</title> </head> <body> <script type="text/javascript"> var a = "全局變量"; function test1() { var a = "局部變量"; alert(a); } function test2() { alert(a); var a = "局部變量"; alert(a); } function test3() { alert(a); a = "局部變量"; alert(a); } </script> <input type="button" value="test1" onclick="test1()"/> <input type="button" value="test2" onclick="test2()"/> <input type="button" value="test3" onclick="test3()"/> </body> </html>
運(yùn)行的結(jié)果是這樣的:
點(diǎn)擊test1 ,彈出局部變量。
點(diǎn)擊test2,彈出undefined,再?gòu)棾鼍植孔兞?br />
點(diǎn)擊test3,彈出全局變量,再?gòu)棾鼍植孔兞?/strong>
這就是使用var和不使用的區(qū)別所在:
如果使用var,那么程序會(huì)強(qiáng)制定義一個(gè)新變量。
如果沒(méi)有使用var,系統(tǒng)會(huì)優(yōu)先在當(dāng)前上下文中搜索是否存在該變量,只有在不存在的前提下才會(huì)重新定義一個(gè)新變量。
test3中,使用的變量a均為全局變量,第一次直接輸出了全局變量,第二次是直接為全局變量賦值之后使用。
test1和test2中都存在在function中使用var定義同名新變量,會(huì)導(dǎo)致函數(shù)中的變量覆蓋掉全局變量。所以在test2中:第一次輸出的a是已經(jīng)被覆蓋了的局部變量a,但是沒(méi)有給予初值,所以會(huì)出現(xiàn)undefined這個(gè)結(jié)果。這樣使用變量實(shí)際上是錯(cuò)誤的,大家應(yīng)該避免。
- JScript中的''var''定義變量的作用域
- Javascript中的var_dump函數(shù)實(shí)現(xiàn)代碼
- JS 判斷undefined的實(shí)現(xiàn)代碼
- js for循環(huán),為什么一定要加var定義i變量
- 關(guān)于JavaScript中var聲明變量作用域的推斷
- js判斷undefined類型,undefined,null, 的區(qū)別詳細(xì)解析
- javascript中的undefined和not defined區(qū)別示例介紹
- JS中判斷null、undefined與NaN的方法
- JS中怎樣判斷undefined(比較不錯(cuò)的方法)
- javascript定義變量時(shí)有var和沒(méi)有var的區(qū)別探討
相關(guān)文章
js實(shí)現(xiàn)兼容IE、Firefox的圖片縮放代碼
這篇文章主要介紹了js實(shí)現(xiàn)兼容IE、Firefox的圖片縮放代碼,涉及JavaScript操作圖片元素的相關(guān)技巧,需要的朋友可以參考下2015-12-12JS實(shí)現(xiàn)進(jìn)度條動(dòng)態(tài)加載特效
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)進(jìn)度條動(dòng)態(tài)加載特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03js實(shí)現(xiàn)簡(jiǎn)單點(diǎn)贊操作
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)簡(jiǎn)單點(diǎn)贊操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03js實(shí)現(xiàn)jquery的offset()方法實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)jquery的offset()方法,實(shí)例分析了jquery的offset()方法原理與采用javascript實(shí)現(xiàn)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01動(dòng)態(tài)改變div的z-index屬性的簡(jiǎn)單實(shí)例
這篇文章介紹了動(dòng)態(tài)改變div的z-index屬性的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下2013-08-08微信小程序?qū)崿F(xiàn)聊天對(duì)話(文本、圖片)功能
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)聊天對(duì)話功能,可以發(fā)送文本、圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07