【发布时间】:2018-12-12 11:39:38
【问题描述】:
我正在重构我的 https://github.com/perdugames/cacau 测试库,我这样做是为了更多地了解 JavaScript 和测试。问题是我不喜欢FIXTURE目前的工作方式,所以我决定重构,我想得到下面的结果,但我仍然不知道如何让“addTest”函数可以访问“ x"。
const runner = new Runner();
runner.addSuite(() => {
console.log('Suite 1');
runner.addFixture(() => {
console.log('Suite');
const x = 10;
});
runner.addTest(() => {
console.log('Test 1');
console.log(x);
});
runner.addTest(() => {
console.log('Test 2');
console.log(x);
});
});
runner.run();
注意:当然没有使用全局变量,也没有添加到“runner”的范围内。
【问题讨论】:
-
您可以在
obj的范围内定义它,即obj.x -
你可以在
funcA的范围内声明它,如果它在父级的范围内,它在技术上不被认为是全局的。 -
@Satpal 我更新了注释,在“对象”的范围内也不会。
-
你的问题没有多大意义。在范围内声明的变量或常量不能在该范围之外访问。这就是范围的重点。您的代码是如此抽象,以至于无法说出您真正想要解决的问题。
-
@Rewire 也许,让我试试。但是“x”在“funcA”的范围内,函数“funcA2A”和“funcA2B”是否可以访问“x”?
标签: javascript function closures