JavaScript的局部变量和全局变量小知识
(了解一下,避免初学者犯错,但下面定义全局变量的做法并不推荐,只是让你们知道这是怎么一回事)
如果在函数中使用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()函数,这个变量就有了定义,就可以在函数外部任何地方被访问到