js作用域问题

 js中的作用域是词法性质的,即在那里定义,其作用域就在那里,比如 

rn =function (){
     var x = 1;
      var o={};
     function test(){
         alert(this.x);  //3
         alert(x);     // 1
     }
      o.x=3;
      o.m=test;
      o.m();
 }
 rn();

 这里的test定义在rn内部,其作用域就在rn内部,所以第二个alert(x); 的值为 1;

再看下面:

 function test(){
     alert(this.x);  //3
      alert(x);     // undefined
 }
 rn =function (){
     var x = 1;
      var o={};
      o.x=3;
      o.m=test;
      o.m();
 }
 rn();

test虽然在rn内调用,但是定义在rn外部,所以不能使用var x=1的变量,即第二个alert为undefined

原文地址:https://www.cnblogs.com/web-fusheng/p/6736638.html