JavaScript中的作用域

作用域

  一个变量如果定义在函数里,那么在函数外面是不可以访问的。
    function  f(){ var b = 1; }
    //不可访问
    document.write(b);   
 
  但是如果你一个变量定义在一个代码块中(一个if或者for 循环里)在代码块外面是可以访问的。
    for (var i = 0; i < 3; i++) {}
     //可访问
    document.write(i);  
  
  JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里       

    function fun01() {            

      var a = 2;            

      //JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里            

      document.write(fun02());        

    }        

    function fun02() {            

       //a没有定义            

      return a;        

    }

         fun01();

    

  不使用var关键字定义的变量, 相当于是全局变量

    //var a = 33;        

    //不使用var关键字定义的变量, 相当于是全局变量       

    function fun01() {    

      //没有使用var关键字定义变量a       

      a = 2;                  

      document.write(fun02());       

    }       

    function fun02() {               

      return a;       

    }

         fun01();

 

作用域链

  如果你在f()里面再定义一个函数n(),n()将可以访问在自己作用域内的变量在加上其父作用域的变量,这被称为“作用域链“,并且这个链条可以想多长就可以有多长

    var a =1;

    function f(){

      var b = 1;
      function n(){
        var c = 3;
      }
    }
posted @ 2012-03-25 10:45  失落心灵  阅读(188)  评论(0编辑  收藏  举报