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 })();