广告
返回顶部
首页 > 资讯 > 精选 >var在for循环变量泄漏为全局变量怎么解决
  • 630
分享到

var在for循环变量泄漏为全局变量怎么解决

2023-06-20 14:06:32 630人浏览 八月长安
摘要

这篇文章主要介绍“var在for循环变量泄漏为全局变量怎么解决”,在日常操作中,相信很多人在var在for循环变量泄漏为全局变量怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”var在for循环变量泄漏

这篇文章主要介绍“var在for循环变量泄漏为全局变量怎么解决”,在日常操作中,相信很多人在var在for循环变量泄漏为全局变量怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”var在for循环变量泄漏为全局变量怎么解决”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

前言

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循环变量泄漏为全局变量怎么解决”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: var在for循环变量泄漏为全局变量怎么解决

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

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

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

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

下载Word文档
猜你喜欢
  • var在for循环变量泄漏为全局变量怎么解决
    这篇文章主要介绍“var在for循环变量泄漏为全局变量怎么解决”,在日常操作中,相信很多人在var在for循环变量泄漏为全局变量怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”var在for循环变量泄漏...
    99+
    2023-06-20
  • win10环境变量全删了怎么解决
    如果您在Windows 10中不小心删除了环境变量,您可以按照以下步骤来解决该问题:1. 打开“此电脑”或“我的电脑”。2. 右键单...
    99+
    2023-09-09
    win10
  • java全局变量赋值问题怎么解决
    在Java中,全局变量可以通过以下几种方式进行赋值:1. 在声明全局变量时直接赋值:```javapublic class MyCl...
    99+
    2023-08-16
    java
  • java全局变量赋值不成功怎么解决
    Java中的全局变量可以在类的任何地方进行赋值,但是要注意赋值的时机和方式。 如果全局变量的赋值不成功,可能是以下几个原因: 赋...
    99+
    2023-10-21
    java
  • Node.js全局变量无法挂载问题怎么解决
    这篇文章主要介绍“Node.js全局变量无法挂载问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Node.js全局变量无法挂载问题怎么解决”文章能帮助大家解决问题。分析与解决 Node.j...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作