javascript - 从外部定义的函数访问范围内的变量

标签 javascript

有没有一种方法可以从在闭包外定义但在闭包内引用的函数打印 temp(闭包变量)的值,而不将 temp 作为变量传递给 funcA?

var funcA, funcB;

funcA = function () {
   console.log(temp);
}

funcB = function () {var temp, funcC;
  temp = 1;
  funcC = funcA;
  funcC();
}
funcB();  // temp is undefined.

这行得通,但这只是因为 funcA 是在 funcB 中定义的:

funcB = function () {var temp, funcA, funcC;
  temp = 1;
  funcA = function () {
       console.log(temp);
  }
  funcC = funcA;
  funcC();
}
funcB(); // 1

我正在尝试找到一种方法,将一些函数定义从外部函数中提取出来,以简化变得有点复杂的代码。我可以在 funcB 之外定义 funcA 但仍然引用临时变量而无需传递参数吗?

我读到 javascript 没有动态运行时范围,它只是词法范围,但是在 funcB 中引用函数(funcA 通过 funcC),有没有办法满足词法范围要求并提供对范围的访问funcB 的变量?

最佳答案

根据 Akinkunle Allen 的评论,我想出了这个似乎解决了我的问题。

function funcB () {
  var funcA, funcB, temp;

  funcA = function () {
     console.log(temp);
  }

  funcB = function () {var funcC;
    temp = 1;
    funcC = funcA;
    funcC(); 
  }
  return funcB();
}

funcB(); // 1

关于javascript - 从外部定义的函数访问范围内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23072540/

相关文章:

javascript - 根据另一个下拉列表的所选项目更改下拉所选项目

javascript - CSS悬停框位置问题

javascript - 是什么导致这个小型 Svelte 应用程序出现 "ctx[1] is not a function"错误?

javascript - Nuxt.js 默认布局未应用

javascript - 通过javascript选中填充的下拉值选择复选框

javascript - AuthGuard 和 RedirectTo 不适用于根路径

javascript - 从 JSON 结构中获取数据

javascript - 通过 Chrome 中的 Fetch API 在 D3 v5 中加载 JSON?

javascript - 为什么尝试释放此 Node-MySQL 池会导致错误?

javascript - $emit Controller 中无法访问的数据