JS作用域为“函数级作用域”,记住最简明的一句“函数中声明的所有变量,无论是在哪里声明的,在整个函数中它们都是有定义的。”
下面是自己的笔记
(1)首先,只是在这个函数中有定义,也就是说,在输出语句后定义和输出语句前定义是一样的结果,最后变量的值都是“undefined”,下面两种写法结果一样;
- function local(){
- document.write(local);
- var local;
- }
- function local(){
- var local;
- document.write(local);
- }
如果涉及到变量赋值,下面两个效果就不一样
- function local_1(){
- var local= "local" ;
- document.write(local);
- // 输出local
- }
- function local_2(){
- document.write(local);
- var local= "local" ;
- // 输出undefined
- }
(2)另一个“无块级作用域”示例
- function local(){
- for(var i = 0 ; i<=2 ;i++){
- document.write(i);
- }
- document.write("<hr>");
- document.write(i);
- /*输出
- 012
- ----------
- 3
- */
- }
显然,变量i在for循环中定义,但离开for这个程序块,它仍旧可以使用,原因就是它还是在local这个函数中。
(3)关于全局变量,和C等差不多了,简单放个例子
- var global = "global";
- function local_1(){
- document.write(global);
- //输出global
- }
- function local_2(){
- document.write(global);
- var global ;
- //输出undefined
- }
- function local_3(){
- var global = "local" ;
- document.write(global);
- //输出local
- }
摘自:http://blog.csdn.net/johnny_depp/article/details/3772070