JavaScript作用域

1、求输出结果

var a = 123;
function Foo(){
  var a =456;
  function inner(){
    console.log(a)  
  }
  return inner
}

result = Foo()
console.log(result())

结果:456

2、求输出结果

Name = 'root';
Age = 18;
function Foo(name,age){
  this.Name = name;
  this.Age = age;
  this.Func = function(){
    console.log(this,Name,this.Age);
    (function(){
      console.log(this.Name,this.Age);
    });           //函数
  };
}

obj = new Foo('alex',28)  //对象
obj.Func()

结果:alex 28  root 18

解析:谁调用函数,谁就是this;第一个结果是obj调用函数,所以this就是obj对象的Name和Age;第二个结果是函数自己执行的,也就是window调用函数,所以this是window全局作用域中的Name,Age。

原文地址:https://www.cnblogs.com/ray-h/p/10196351.html