首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么在let和var关键字中会出现这种情况。它们是否也会影响JavaScript的异步特性[重复]?

为什么在let和var关键字中会出现这种情况。它们是否也会影响JavaScript的异步特性[重复]?
EN

Stack Overflow用户
提问于 2018-06-06 08:30:03
回答 1查看 0关注 0票数 0

这个问题已经有了一个答案:

  • 使用“let”和“var”在JavaScript中声明变量有什么区别?25个答案
  • JavaScript内部循环闭包-简单实用示例36项答复

在这两种情况下,我都有不同的输出。为什么let和var关键字在这里起着重要作用?为什么它在第一种情况下影响setTimeout函数的同步性质,输出都是数组的元素,但是在第二部分,我没有定义。

代码语言:txt
复制
const arrs = [20,24,30,42];  
for( let i = 0; i< arrs.length ; i++) {  
  setTimeout( () => {  
    console.log('value at index '+i+' is '+arrs[i]);
  }, 3000); 
}

const arr = [10, 12, 15, 21];
for (var i = 0; i < arr.length; i++) {
  setTimeout( () => {
    console.log('Index: ' + i + ', element: ' + arr[i]);
  }, 3000); 
}
EN

回答 1

Stack Overflow用户

发布于 2018-06-06 18:12:31

由于这个原因,当循环中的函数运行时,变量i=3,因此它是未定义的。

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

https://stackoverflow.com/questions/-100004776

复制
相关文章

相似问题

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