javascript中錯誤使用var造成undefined
在javascript中根據(jù)變量作用的范圍不同分為局部變量和全局變量,直接定義的變量是全局變量,全局變量可以被所有的腳本訪問;在函數(shù)中定義的變量是局部變量,局部變量只在函數(shù)內(nèi)有效。
如果全局變量和局部變量使用相同的變量名,則局部變量將會覆蓋全局變量。
例子代碼:
<!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>
運行的結(jié)果是這樣的:
點擊test1 ,彈出局部變量。
點擊test2,彈出undefined,再彈出局部變量
點擊test3,彈出全局變量,再彈出局部變量
這就是使用var和不使用的區(qū)別所在:
如果使用var,那么程序會強制定義一個新變量。
如果沒有使用var,系統(tǒng)會優(yōu)先在當前上下文中搜索是否存在該變量,只有在不存在的前提下才會重新定義一個新變量。
test3中,使用的變量a均為全局變量,第一次直接輸出了全局變量,第二次是直接為全局變量賦值之后使用。
test1和test2中都存在在function中使用var定義同名新變量,會導致函數(shù)中的變量覆蓋掉全局變量。所以在test2中:第一次輸出的a是已經(jīng)被覆蓋了的局部變量a,但是沒有給予初值,所以會出現(xiàn)undefined這個結(jié)果。這樣使用變量實際上是錯誤的,大家應該避免。
- JScript中的''var''定義變量的作用域
- Javascript中的var_dump函數(shù)實現(xiàn)代碼
- JS 判斷undefined的實現(xiàn)代碼
- js for循環(huán),為什么一定要加var定義i變量
- 關(guān)于JavaScript中var聲明變量作用域的推斷
- js判斷undefined類型,undefined,null, 的區(qū)別詳細解析
- javascript中的undefined和not defined區(qū)別示例介紹
- JS中判斷null、undefined與NaN的方法
- JS中怎樣判斷undefined(比較不錯的方法)
- javascript定義變量時有var和沒有var的區(qū)別探討
相關(guān)文章
微信小程序?qū)崿F(xiàn)聊天對話(文本、圖片)功能
這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)聊天對話功能,可以發(fā)送文本、圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07