JavaScript基础回顾
一、函数的作用域和声明提升
A.函数的作用域
1 //函数的作用域 2 var color = "blue"; 3 function changeColor(){ 4 var anotherColor = "red"; 5 function swapColors(){ 6 var tempColor = anotherColor; //red 7 anotherColor = color; //blue 8 color = tempColor; //red 9 // 这里面可以访问到 color, anotherColor, tempColor 10 } 11 // 这里只能访问到 anotherColor、全局变量color,不能访问tempColor 12 swapColors(); 13 } 14 // 这里只能访问到color 15 changeColor();
 
 
B.声明的提升
Javascript-block-scop<块级作用域>针对于function-scop
使用if语句的块级作用域声明的变量在外部是可以访问的
1 function test(obj){ 2 var i = obj; //i在整个函数体内均是有定义的 3 if (typeof obj == 'object') { //块级作用域 4 var j = obj; //i在函数体内是有定义的,不仅仅在这个代码段内 5 for (var k = 0; k < 10; k++) { 6 console.info(k); //输出数字0-9 7 }; 8 console.info(k); //k已经定义了输出10 9 }; 10 11 console.info(j); //j已经定义了但可能没有初始化 12 } 13 test({name : 'object'});
函数体内声明的变量j被提升至函数的顶部,变量的赋值是在执行的时候完成的
var scop = 'global'; function fn(){ console.info(scop); var scop = 'local scop'; //内部的声明变量提升到函数的顶部 } //猜想结果 local scope //实际结果 undefined //等价于===>> var scop = 'global'; function fn(){ var scop; //声明一个变量 console.info(scop); //变量存在, 变量默认值为undefined scop = 'local scop'; //赋值 console.info(scop); //local scop }
参考资料
JavaScript 高级程序设计
JavaScript 权威指南
http://www.cnblogs.com/jesse2013/p/the-essence-of-javascript-you-have-to-know-part2.html

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号