(瞭解一下,避免初學者犯錯,但下麵定義全局變數的做法並不推薦,只是讓你們知道這是怎麼一回事) 如果在函數中使用var定義一個變數,那麼這個變數在函數退出後就會被銷毀,例如: function test () { var message = "Hi"; // 局部變數 (解釋:用var操作符定義的變數 ...
(瞭解一下,避免初學者犯錯,但下麵定義全局變數的做法並不推薦,只是讓你們知道這是怎麼一回事)
如果在函數中使用var定義一個變數,那麼這個變數在函數退出後就會被銷毀,例如:
function test () {
var message = "Hi"; // 局部變數 (解釋:用var操作符定義的變數將成為定義該變數的作用域中的局部變數)
}
test();
alert (message); //此時發生錯誤
解釋:因為變數message是在函數中使用var定義的。當函數被調用時,就會創建該變數併為其賦值。而在此之後,即函數調用完之後,這個變數又會立即被銷毀,或者理解為該變數只在這個函數內有效,因此上面例子中的下一行代碼 alert (message); 會發生錯誤。
不過呢,我們將var操作符省略掉,就會創建出一個全局變數,例如:(這樣創建全局變數不推薦:首先難維護,其次給未經聲明的變數賦值在文檔模式中的嚴格模式上會拋出錯誤)
function test () {
message = "Hi"; // 全局變數
}
test();
alert (message); //此時會彈出Hi的彈框
省略了var操作符,message就成為了全局變數。所以,只要調用過一次test()函數,這個變數就有了定義,就可以在函數外部任何地方被訪問到