var i = 10;function a (){var b = 1;function c (){var d = 2;}c();alert(b);alert(d);
alert(i);}a();//输出此段代码 b=1, d is not defined,i=10
1.作用域:程序中定义这个变量的有效区域。
变量d只在函数c中才会有结果,函数c就是变量d的作用域。
2.局部变量:有作用域限制的就叫做局部变量。函数a下面的变量b,函数c下面的变量d。
3.全局变量:在最外围的一个对象,或者初始化变量时没有使用var声明。
函数i。window对象(window.onload等等)。
4.作用域链:保证代码的执行过程,查询顺序:由内向外。函数d→函数b→函数i
5.JavaScript没有块级作用域。
如果需要拥有,将for语句块放入闭包中即可。
参考资料:/video/9631/0
JavaScript高级程序设计