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