{ let x = 1; it("",function() { console-6ren">
gpt4 book ai didi

javascript - 在Jasmine中,beforeAll()和let之间有什么区别吗?

转载 作者:行者123 更新时间:2023-11-27 22:43:48 26 4
gpt4 key购买 nike

我尝试过思考这个问题,阅读了一些问题,并且创建了一个小测试:

describe("let", () => {
let x = 1;
it("",function() {
console.log(x + "<< it");
console.log(y + "<< it");
});
});

describe("beforeAll()", () => {
let x;
let y = 2;
beforeAll(() => {
x = 1;
});
it("",function() {
console.log(x + "<< it");
console.log(y + "<< it");
});
});

其中输出如下:

LOG: '1<< it'
LOG: 'undefined<< it'
LOG: '1<< it'
LOG: '2<< it'

这对我来说意味着 beforeAll() 和 let 的作用域都是包含函数,并且在任何包含的 it 运行之前运行。使用 let (实际上是 var),我对 JavaScript 作用域的理解使得涉及 let 的结果符合预期。

这在 RSpec 中不会发生,其中 y 将在第一个测试中定义,因为描述是在 it 之外运行的。 (这是我问的主要原因,如果可能的话,我想清理不必要的代码,因为 let 更干净,而不是让 RSpec 残留导致不必要的冗长)。

那么 beforeAll()let 之间是否存在我不知道的差异(我的测试/理解中的缺陷可能已被混淆)?

最佳答案

beforeAll 回调可以访问规范 this 并且可以是异步的。

如果规范中未使用 this 上下文,我建议对常量使用 let/const ,并使用 beforeAll 用于设置操作(可以选择与 afterAll 配对)。

关于javascript - 在Jasmine中,beforeAll()和let之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38565341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com