广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >关于var在for循环遇到的问题解决
  • 869
分享到

关于var在for循环遇到的问题解决

2024-04-02 19:04:59 869人浏览 薄情痞子
摘要

前言 var是ES5定义变量的一种声明方式,一直听说var声明变量,存在循环变量泄漏为全局变量问题,但总是想不明白这个“全局”有什么影响,还有,到底什么时候输出的结果是递增/减的值,

前言

var是ES5定义变量的一种声明方式,一直听说var声明变量,存在循环变量泄漏为全局变量问题,但总是想不明白这个“全局”有什么影响,还有,到底什么时候输出的结果是递增/减的值,什么时候输出一样的值,也不清楚。

问题复现


for (var i = 1; i <= 5; i++) {
  setTimeout(function timer() {
    console.log(i)
  }, i * 1000)
}

预期效果:12345

打印结果:66666

解决方式

闭包


for (var i = 1; i <= 5; i++) {
    (function (j) {
        setTimeout(function timer() {
            console.log(j)
        }, j * 1000)
    })(i)
}

setTimeout 第三参数


for (var i = 1; i <= 5; i++) {
   setTimeout(
       function timer(j) {
           console.log(j)
       },
       i * 1000,
       i
   )
}

使用 let 定义 i


for (let i = 1; i <= 5; i++) {
    setTimeout(function timer() {
        console.log(i)
    }, i * 1000)
}

let

关于let,记住:当前的i只在本轮循环有效,每一次循环的i其实都是一个新的变量。

javascript 引擎内部会记住上一轮循环的值,初始化本轮的变量i时,就在上一轮循环的基础上进行计算。

另外,for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。


for (let i = 0; i < 3; i++) {
let i = 'abc';
console.log(i);
}
// abc
// abc
// abc

总结

到此这篇关于var使用for循环遇到的问题解决的文章就介绍到这了,更多相关var for循环问题内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 关于var在for循环遇到的问题解决

本文链接: https://www.lsjlt.com/news/130137.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于var在for循环遇到的问题解决
    前言 var是ES5定义变量的一种声明方式,一直听说var声明变量,存在循环变量泄漏为全局变量问题,但总是想不明白这个“全局”有什么影响,还有,到底什么时候输出的结果是递增/减的值,...
    99+
    2022-11-12
  • js中如何解决foreach循环中遇到的问题
    这篇文章给大家分享的是有关js中如何解决foreach循环中遇到的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.列表页面用"foreach循环"的时候...
    99+
    2022-10-19
  • 关于IDEA配置Hibernate中遇到的问题解决
    发现问题 1.在配置User.hbm.xml文件时, table处无法找到t_user的表,于是alt+enter显示Assign Data Sources 将Data Sourc...
    99+
    2022-11-12
  • 使用JSON.stringify时遇到的循环引用问题怎么解决
    这篇文章给大家分享的是有关使用JSON.stringify时遇到的循环引用问题怎么解决的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。程序员在日常做TypeScript/JavaScript开发时,经常需要将复杂的...
    99+
    2023-06-14
  • 关于spring循环依赖问题及解决方案
    目录一、三种循环依赖的情况比如几个Bean之间的互相引用 甚至自己“循环”依赖自己二、解决方案如何获取依赖三、解决循环依赖必须要三级缓存吗结论四、无...
    99+
    2022-11-13
  • 关于全局安装vue-cli遇到的问题及解决
    目录全局安装vue-cli的问题一直报如下错误全局安装vue-cli时遇到errno4048错误解决办法全局安装vue-cli的问题 以前在电脑上全局安装vue-cli时没有出现问题...
    99+
    2022-11-13
  • 详解如何解决使用JSON.stringify时遇到的循环引用问题
    程序员在日常做TypeScript/JavaScript开发时,经常需要将复杂的JavaScript对象通过JSON.stringify序列化成json字符串,保存到本地以便后续具体...
    99+
    2022-11-11
  • 基于restTemplate遇到的编码问题及解决
    目录背景问题一:中文乱码描述分析结论方案总结问题二:特殊字符串丢失描述分析结论方案背景 之前用restTemplate做网络间的请求,没遇到过问题。今天先是出现了中文乱码的问题,而后...
    99+
    2022-11-12
  • 关于同时使用swiper和echarts遇到的问题及解决方法
    目录项目背景问题一解决办法问题二项目背景 场景:需要在swiper中每个轮播项中展示包含不同的echarts,并开启loop:true循环 swiper: 5.3.6vue-awes...
    99+
    2023-05-15
    使用swiper和echarts遇到问题 使用swiper和echarts
  • word遇到问题需要关闭的解决方法
    这篇文章主要介绍word遇到问题需要关闭的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  第一步,打开word(不是WORD文件而是桌面上或者开始-程序里的word快捷方式) 出现了一个提示,显示...
    99+
    2023-06-06
  • 多线程如何解决for循环效率的问题
    多线程解决for循环效率问题 在for里面,如果执行一次for里面的内容所需时间比较长,可以使用线程池来提高for循环的效率 public class TreadFor { pr...
    99+
    2022-11-12
  • JS关于for循环中使用setTimeout的四种解决方案
    目录概述解决方案1:闭包解决方案2:拆分结构解决方案3:let解决方案4:setTimeout第三个参数概述 我们先来简单了解一下setTimeout延时器的运行机制。setTime...
    99+
    2022-11-12
  • 如何在vue中解决提示警告for循环报错的问题
    这篇文章将为大家详细讲解有关如何在vue中解决提示警告for循环报错的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。警告1.出现这个警告问题的时候 我们可以去main...
    99+
    2022-10-19
  • 解决Windows环境下安装 mysql-8.0.11-winx64 遇到的问题
    下载mysql安装包,我的是下载mysql-8.0.11-winx64,解压到你想安装的目录下,然后配置环境(window环境下,mac本还没试过), 1、首先,配置环境:右击此电脑->属性->...
    99+
    2022-10-18
  • 关于HashMap 并发时会引起死循环的问题解析
    今天研读Java并发容器和框架时,看到为什么要使用ConcurrentHashMap时,其中有一个原因是:线程不安全的HashMap, HashMap在并发执行put操作时会引起死循...
    99+
    2022-11-12
  • Oracle在Centos7.5安装遇到的问题及解决方法
    本篇内容主要讲解“Oracle在Centos7.5安装遇到的问题及解决方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle在Centos7.5安装遇到...
    99+
    2022-10-18
  • 怎样解决在Suse应用Ftp时遇到的问题
    在Suse中应用Ftp的解决办法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们在学习这两天Suse上,一定会发想很多问题与看法,尤其是随着Suse越来越受到...
    99+
    2023-06-17
  • 基于R语言xlsx安装遇到的问题及解决方案
    1、java环境的安装,如果java安装的是64位使用R软件一定要是64位,如果使用32位会报错,版本一定要对应。 2、安装顺序要是install.packages(“rJava”)...
    99+
    2022-11-12
  • 如何解决js中for循环输出i为同一值的问题
    这篇文章主要介绍如何解决js中for循环输出i为同一值的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、最近开发中遇到一个问题,为什么每次输出都是5,而不是点击每个p,就ale...
    99+
    2022-10-19
  • 如何解决vue的v-for循环中图片加载路径问题
    这篇文章将为大家详细讲解有关如何解决vue的v-for循环中图片加载路径问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先看一下产品需求,如下图所示,产品要求图片和它的...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作