首先考察两段代码: PHP: <script language="javascript" type="text/javascript"> <!-- var myVar = "Hi!"; function tit() { alert(myVar); myVar = "Hello World!"; alert(myVar); } window.tit(); --> </script> PHP: <script language="javascript" type="text/javascript"> <!-- var myVar = "Hi!"; function tit() { alert(myVar); var myVar = "Hello World!"; alert(myVar); } window.tit(); --> </script> 第一段代码运行后,显示的结果分别是“Hi!”和“Hello World!”,而第二段代码运行后的结果分别是“undefined”和“Hello World!”。 第一段代码很容易理解,在代码开头,我们定义了全局变量 myVar,并且赋值“Hi!”,在函数 tit() 中,首先显示了该全局变量的内容,即“Hi!”。然后赋予新值并显示这个新值——“Hello World!”。 但是在第二段代码中,情况就截然不同。首先显示 myVar ,得到“undefined”,表明该变量并没有被初始化。问题就出在 var myVar = "Hello World!";,该语句定义了一个局部变量 myVar,而这个局部变量在函数代码段中任何地方都是有效的,尽管可能在初始化之前就调用了该变量。 另外要注意的是,函数 tit() 中定义了 myVar 变量,但是这并不会改变全局变量 myVar 的值。 但是如果如同第一段代码,函数中没有重新定义 myVar 变量,全局变量 myVar 的值就改变了。 在 window.tit(); 后加上一行 alert(myVar); 得到的结果,分别是“Hello World!”和“Hi!”。