1 <script> 2 var i = 'yuanjianhang'; 3 function myloveName() { 4 alert(i); 5 var i = 'guanxi'; 6 7 } 8 myloveName(); 9 </script>
运行结果 undefined
1 <script> 2 var i = 'yuanjianhang'; 3 function myloveName() { 4 var i = 'guanxi'; 5 alert(i); 6 } 7 myloveName(); 8 </script>
运行结果 guanxi
代码分析 function内 加上var 代表局部变量,声明的局部变量名称和外部的全局变量名称相同,但是与外部的i是没有关系的,只是名称相同而已,所以alert(i)在,局部变量定义之前会输出undefined.
1 <script> 2 var i = 'yuanjianhang'; 3 function myloveName() { 4 alert(i); 5 i = 'guanxi'; 6 7 } 8 myloveName(); 9 </script>
运行结果 yuanjianhang
1 <script> 2 var i = 'yuanjianhang'; 3 function myloveName() { 4 5 i = 'guanxi'; 6 alert(i); 7 } 8 myloveName(); 9 </script>
运行结果 guanxi
代码分析 function内i没加var 代表全局变量,所以alert(i)在变量赋值之前,输出yuanjianhang
1 <script> 2 i = 'yuanjianhang'; 3 function myloveName() { 4 a = 'guanxi'; 5 } 6 myloveName(); 7 alert(a); 8 //document.write(a); 9 </script>
运行结果 guanxi 代码分析a为全局变量
PS:全局变量可以不声明var 函数内变量必须声明var,在定义全局变量时加或不加var关键字没什么影响;但在定义局部变量时如果不加var关键字javascript解释程序会将其解释为全局变量。