stm32怎么调用for循环内部的变量_循环中的异步&&循环中的闭包

本文探讨了在STM32编程中遇到的for循环内部变量处理,特别是异步操作如setTimeout函数的影响。通过示例分析了var与let声明变量在循环中的区别,强调了let在块级作用域的优势。文章详细介绍了四种处理循环异步的方法,包括使用全局变量、闭包以及setTimeout的巧妙应用,总结了在ES6环境下利用let解决异步依赖循环索引问题的最佳实践。
摘要由CSDN通过智能技术生成

在这之前先要了解一下

for循环中let 和var的区别

var 是函数级作用域或者全局作用域,let是块级作用域 看一个例子

    function foo() {

      for (var index = 0; index < array.length; index++) {

        //..循环中的逻辑代码

      }

      console.log(index);//=>5

    }

    foo()

   console.log(index)//Uncaught ReferenceError: index is not defined

foo函数下的index输出5,全局下的index不存在

现在我们把var 换为let

    function foo() {

      for (let index = 0; index < array.length; index++) {

        //..循环中的逻辑代码

      }

      console.log(index)//Uncaught ReferenceError: index is not defined

    }

    foo()

报错了,index不在foo函数作用域下,当然肯定也不会再全局下

因为var和let的这个区别(当然var和let的区别不止于此)所以导致了下面的这个问题

关于var

    const array = [1, 2, 3, 4, 5]

    function foo() {

      for (var index = 0; index < array.length; index++) {

        setTimeout(() => {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值