首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >console.log始终打印for循环中的最高索引

console.log始终打印for循环中的最高索引
EN

Stack Overflow用户
提问于 2018-08-23 18:15:46
回答 1查看 70关注 0票数 0

下面是JavaScript中的简单jest测试块,在describe下,我编写了一个简单的test来打印要放入的循环的当前索引(直到5)。但结果始终是Test 5

代码语言:javascript
复制
describe("Hello", async ()=>{
    for(var i=0; i<5; ++i){
        test(``Test ${i}``, async ()=>{
            await console.debug("Test "+ i);
        });
    }
});

有人能澄清一下,它是如何工作的吗?

EN

回答 1

Stack Overflow用户

发布于 2018-08-23 18:18:57

使用let而不是var,让我们保留每个async调用的作用域。因此,在每个循环中,i的新值将被传递给您的方法,并且这些值将保持不变。在var的情况下,变量i将是function作用域(该函数是您在describe()中用作回调的函数),因此当您的asyn方法解析时,您将看到存在于您的回调中的i的值,因为循环已经结束,该值将为5

代码语言:javascript
复制
for(let i=0; i<5; ++i){
       // dummy async method
       setTimeout(() => {
          console.log(i)
       }, 2000)
    }

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51983471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档