Javascript闭包-父函数

Javascript闭包-父函数,javascript,closures,Javascript,Closures,我试图理解Java脚本中的闭包。闭包是函数的局部变量-在函数返回[]后保持活动状态 在许多文献中,我看到他们在描述函数闭包时考虑母函数。但根据下面的例子,我认为一个函数不仅可以访问父函数中的变量,还可以访问父函数及以上的变量 有人能解释一下我的想法是否正确吗? 先谢谢你 test1 = function() { var x = 10; return function(){ alert(++x); }; } test2 = function() { var x = 10;

我试图理解Java脚本中的闭包。闭包是函数的局部变量-在函数返回[]后保持活动状态

在许多文献中,我看到他们在描述函数闭包时考虑母函数。但根据下面的例子,我认为一个函数不仅可以访问父函数中的变量,还可以访问父函数及以上的变量

有人能解释一下我的想法是否正确吗? 先谢谢你

test1 = function() {
  var x = 10;
  return function(){
    alert(++x);
  };
}

test2 = function() {
  var x = 10;
  return function(){
    return function(){
       alert(++x);
    }
  };
}

t1 = test1();
t1(); //11
t1(); //12
t2 = test2()();
t2(); //11
t2(); //12

是的,每个作用域都可以访问其父作用域,这是一种传递关系-当您的父作用域可以从您的祖父母访问变量,并且您可以从您的父母访问变量时,您也可以访问您的祖父母(及其父母)的变量.

我认为test1顶部缺少了一些代码。如果父函数可以访问变量,那么子函数也可以。它不依赖于直接父级中显式定义的变量。这里唯一重要的是变量的范围(定义变量的位置)。您可以访问定义的变量的最高层。谢谢大家。把它弄清楚了。。