Javascript 闭包 - 父函数

标签 javascript closures

我正在尝试理解 JavaScript 中的闭包。闭包是函数的局部变量——在函数返回后保持事件状态[ reference ]。

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

有人可以解释一下我的想法是否正确吗? 提前谢谢您..

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

最佳答案

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

关于Javascript 闭包 - 父函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26676035/

相关文章:

javascript - 根据复选框选择显示随机文本 (javascript)

python - 如何模拟嵌套函数?

rust - 在闭包内使用 Vector,无需克隆

ios - 是否可以在 Swift 中创建通用闭包?

ios - 在 Swift 中将闭包分配给变量会导致 'variable used before being initialized'

javascript - 如何根据窗口大小添加条件滚动?

javascript - 从 React 中的异步调用批量状态更新的最佳方法是什么?

javascript - 在 setTimeout 中使用 JavaScript 闭包

javascript - Bootstrap - 如何从元素中清除 css 以重新开始?

javascript - 在 HTML 表格中查找 td 旁边的 td 文本