javaScript没有块级作用域

1.如下,变量i,j,k 的作用域是相同的。

 1 function test(obj){
 2     var i= 0;
 3     if(typeof obj == "object"){
 4         var j = 0;
 5         for(var k = 0; k< 1; k++){
 6             document.write(k);
 7         }
 8         document.write(k);
 9     }
10     document.write(j);
11 
12 }

2.将变量放置在函数开关是好的编程习惯

1 var scope = "global";
2 function f(){
3     alert(scope);       //undefined
4     var scope = "local";
5     alert(scope);       //local
6 }

这两个效果相同

1 var scope = "global";
2 function f(){
3     var scope;
4     alert(scope);    //undefined
5     scope = "local";
6     alert(scope);    //local
7 }

 3.今天遇到奇怪的问题

 1          (function(){
 2             var a = false;
 3             
 4             b = function(){
 5                  a = 1;
 6             }
 7             b();
 8             alert(a);                                  //弹出1
 9           })();  
13 
14          (function(){
15             var a = false;
16             
17             b = function(){           
18                 var a = 1;        //函数作用域
19             }
20             b();
21             alert(a);               //弹出false
22          })();        
26           (function(){
27             var a = false;         
28             if(true){          //没有块作用域
29                 var a = 1;
30             }
31             alert(a);            //弹出1
32             
33          })();

 

posted @ 2013-08-03 21:51  等风来。。  Views(339)  Comments(0Edit  收藏  举报
------------------------------------------------------------------------------------------------------------ --------------- 欢迎联系 x.guan.ling@gmail.com--------------- ------------------------------------------------------------------------------------------------------------