标签:
一 变量作用域
1.未使用 var声明的变量默认为全局变量
2.如果一个 function {}中使用了var ,那个变量被视为局部变量,它只存在于这个函数的上下文中;反之如果没有使用 var声明,则默认是全局变量
二 预编译与执行
js分块预编译和执行期,预编译期处理所以使用var 声明的变量(此时他们的值为 undefined),和 function声明的函数,例如:
1 <script> 2 var name=‘li si‘;
3 function test(){ 4 alert(name); 5 var name=‘zhang san‘; 6 } 7 8 test()// undefiend 9 </script>
这段代码相当于
1 1 <script> 2 var name; 3 name=‘li si‘;
4 3 function test(){ 5 var name; 6 4 alert(name); 7 name=‘zhang san‘; 8 6 } 9 7 10 8 test()// undefiend 11 9 </script>
所以好的写代码习惯是将所有要使用的变量写到代码块的最前面‘
变量的作用域是以函数为单位的不是一for while 等等为单位的,所以,在test中 name 变量是 zhangsan 一旦test调用结束,name 的值就变为 lisi
标签:
原文地址:http://www.cnblogs.com/haigui-zx/p/4705080.html