javascript - 在 JavaScript 中调用嵌套作用域中的内部函数

标签 javascript

我正在学习 JS,想知道有没有一种方法可以返回函数 bar() 或 buz() 而不返回 foo()?例如,如果我想返回函数 bar();得到2,我可以这样做吗?会是类似 foo().bar(); 的东西吗? ?

// Nested Scopes
function foo() {  // can only access itself
  var a = 1;

  function bar() {  // access to foo(), not buz()
    var b = 2;

    function buz() {   // access to bar() and foo()
      var c = 3;

      console.log(a, b, c);  // 1, 2, 3
    }
    buz();
    console.log(a, b);  // 1, 2
  }
  bar();
  console.log(a);  // 1
}
foo();  // 1

最佳答案

当然。您可以在每个阶段返回一个包含该函数的对象,也可以返回该函数本身。这利用了所谓的 closure .

function foo() {
  var a = 1;
  
  function bar() {
    var b = 2;
    
    function buz() {
      var c = 3;
      console.log(a, b, c);
    }
    
    console.log(a, b);
    return { buz: buz };
  }
  
  console.log(a);
  return { bar: bar };
}

foo().bar().buz();

关于javascript - 在 JavaScript 中调用嵌套作用域中的内部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42289261/

相关文章:

javascript - 触发同级组件之间的状态更改

javascript - 在第一行的第二张图片加载完成后开始加载第二行

php - Yii 中的无限滚动

javascript - 使用 Javascript 代码检测开发工具是否打开在 Mozilla Firefox 中不起作用

javascript - 如何在 Chromium 开发者控制台中使用 console.log、console.warn 等?

javascript - 如何在不改变对象的情况下更改对象的属性?

javascript - 如何在 Javascript 中运行多个函数?

javascript - 我用 JS 更改了下拉框上的某些内容,但 innerHTML 不会返回更改后的内容

javascript - 游戏的每回合超时逻辑

javascript - 如何在 React 中添加图标 Fontawesome?