for循环中输出同一变量值

[Vue][面试]谈谈你对MVC、MVP和MVVM的理解 谈谈你对MVC、MVP和MVVM的理解 答题思路:此题涉及知识点很多,很难说清楚,说透彻,因为MVC,MVP这些我们前端程序员自己甚至都没用过。但是恰恰反映了前端这些年从无到有, 从有到优的变迁过程,因此沿此思路回答将十分清除。 Web1.0时代 在web1.0时代,并没有前端的概念。开发一个web应用多数采用ASP.NET/Java/PHP编写,项目通常由多个aspx/jsp/php文件构成,每个文件中同时包含了HTML、CSS、JavaScript、C#/Java/PHP代码, 系统整体架构可能如下图所 阅读详情

//循环输出通一变量值
for(var i=0;i<5;i++){  console.log(i)   //0,1,2,3,4  全局
   setTimeout(function(){
       console.log(i)                   //5,5,5,5,5  内部 
   },1000);
}

为什么会产生这样的结果?

首先,这里的i属于全部变量,即函数中所获取的i。

再者,i<5时,i一直在自加,知道i=5时停止自加,然后开始执行函数,所以目前函数中i已经为5。


使用闭包解决:

//方法一:i作为参数传递至内部函数  
for(var i=0;i<5;i++){
   (function(k){
    setTimeout(function(){console.log(k)},1000)
    })(i);
}
//方法二:闭包内声明局部变量K,将i赋值给K  
for(var i=0;i<5;i++){
   (function(){
    var K = i;
    setTimeout(function(){console.log(K)},1000)
    })();
}
//方法三:闭包内返回函数
for(var i=0;i<5;i++){
    (function(){
       return function(){console.log(i)}
     })()()
}
或for(var i=0;i<5;i++){
    setTimeout((function(k){
       return function(){console.log(k)}
     })(i),1000)
}或
for(var i=0;i<5;i++){
    (function(k){
       return function(){console.log(k)}
     })(i)()
}



Crush 终端 LLM 工具安装与使用指南:把 AI 编程助手装进你的命令行 喜欢命令行的开发者需要离线/轻量级 AI 助手的场景希望自定义模型与工具链的高级用户通过LSP + MCP + 多模型支持,Crush 不仅能写代码,还能理解项目、调用工具、连接服务,真正成为你的“终端编程搭档”。 阅读详情

相关推荐

半导体设备微振动控制:天棚阻尼PID与SIMULINK建模实战

半导体制造设备对微振动的敏感度已进入纳米级,光刻机、量测设备等一旦遭遇超过VC-C振动准则的扰动,便会出现套刻误差或检测误判。主动隔振技术通过传感器、控制器与执行器形成闭环,能有效抑制低频共振,其中天棚阻尼控制因物理概念清晰、鲁棒性强而成为工程首选。结合MATLAB/SIMULINK建模,可在设计阶段完成系统性能边界评估与参数整定,再通过C代码生成与FMU导出实现算法向控制器和跨平台仿真迁移。本文从VC-C指标拆解出发,依次讲解天棚阻尼PID控制原理、两自由度被控对象建模、控制增益估算、仿真验证方法,并给出

weixin_29169505的博客 326

js for循环输出i为同一值的问题

https://blog.youkuaiyun.com/u013084331/article/details/50716467

_心动的博客 1864

告别踩坑!S32K3xx芯片上RTD-SDK的DFLASH与FEE模块配置全流程(基于S32DS)

本文详细解析了在NXP S32K3xx系列MCU上配置RTD-SDK的DFLASH与FEE模块的全流程,基于S32DS开发环境。从Cache配置、Mem_43_InFls模块设置到MemAcc模块的三种调用模式,提供了实战代码示例和常见问题排查表,帮助开发者高效完成存储管理配置,避免常见错误。

weixin_42653691的博客 269

for循环使用var和let声明变量的区别

for循环使用var声明变量 i,最后输出的是10。变量i是var命令声明的,在全局范围内都有效,所以全局只有一个变量i。每一次循环,变量i的值都会发生改变,而循环体内被赋给数组arr的函数内部的,里面的i指向的就是全局的i。也就是说,所有数组arr的成员里面的i,指向的都是同一个i,所以运行时输出的是最后一轮的i的值10。for循环使用 `let` ,声明变量 i,声明的变量 i 仅在块级作用域内有效,最后输出的是 6。

jyn15159的博客 861

使用 STM32F7 和 TensorFlow Lite 开发低功耗人脸识别设备

我们讨论了 STM32F7 的特点和能力,TensorFlow Lite 在 STM32F7 上的应用,以及一些降低功耗的优化技术。- 准备模型:选择合适的人脸识别模型,在 TensorFlow 中进行训练和导出,并使用 TensorFlow Lite 转换为适用于 STM32F7 的量化模型。请注意,上述代码仅展示了如何加载和运行 TensorFlow Lite 模型的方法,实际应用中需要集成人脸检测和识别模型,并根据实际需求进行相应的输入和输出处理。结合这两个工具,我们可以开发出低功耗的人脸识别设备。

weixin_66608063的博客 2588

LAMMPS实操系列(一): 大量FCC-CoCrCuFeNi高熵合金建模与最稳定结构筛选

高熵合金(High-entropy alloys,HEA),是由五种或五种以上等量或大约等量金属形成的合金。由于高熵合金可能具有许多优秀的物理化学性质,因此在材料科学领域受到广泛关注

Ceshigo_CD的博客 3259

for循环中用var和let的区别(为什么输出结果会不一样)

可以看到使用let声明的for循环每次执行值都会不断叠加,因为let声明的变量是块级作用域的,不存在变量提升,也不存在重复声明的情况,所以值会改变。可以看到它的输出结果,每次循环输出的均是同一个值,这是因为var是存在变量提升的,实际只执行一次,所以每次输出结果一样。

qq_59541478的博客 696

【ESP32CAM+Android+OpenCV】自定义目标数据集、训练自己的OpenCV模型部署到手机APP并对ESP32CAM无线图传显示并实时检测识别目标_资料编号30

本项目实现自定义目标数据集(想检测什么就检测什么,按照本文教程自己来更换目标)、训练自己的OpenCV模型实时检测识别(pycharm工程)。手机APP(Android studio工程)部署OpenCV模型实现对ESP32CAM(arduino工程)无线WIFI图传过来的图像实时检测识别。 本文以火焰检测识别为例进行演示,通过该过程,结合本文可自定义尝试更换为其它目标的检测,例如更换为车辆、车牌、手势、人脸面部活动、人脸表情、火焰烟雾、行人、口罩、行为、水果、植物、农作物、建筑、损伤等等部署进行检测。

嵌入式阿齐Archie 3484

JS中for循环输出同一变量值的问题

例一var data = []; for(var k = 0; k < 3; k++){ data[k] = function(){ return k; }; } alert(data[0]());预想中应输出0,但结果为3 首先必须清楚一下几点 . 在JS中没有块级作用域的概念,for循环中定义的var k实际上是一个window全局变量。

yuki-li的博客 6188

基于数字图像处理方法的迷宫问题图解 : 基于骨架提取、四邻域

问题是,这条红色的线是人为标记出来的能通的路线,对计算机来看,黑色和红色的线没有任何差异,所以之前的想法压根不起作用。对应于数字图像的表达,就是从远离主干的分支端点出发,如果4邻域中只有一个可以通的道路,那么这个点在分支上。闪电划过,有一道连接了天空和大地,就是迷宫的解,其余的分支就是迷宫中对应的死路。类似这个闪电图,假设图中最粗的主干(迷宫解的路线)是最先形成的,其余的细小的分支是慢慢从主干上形成的。因此,只要在端点的4邻域中,找到可以走的道路,那么一定就是分支,也就是要移除的路线。

Henry的博客 2075

【软件系统架构】系列十一:面向对象技术—sysML

摘要: SysML(系统建模语言)是UML的扩展,专为复杂系统工程设计,支持硬件、软件、人员等跨领域建模。其核心包括9种图:4种结构图(如块定义图BDD、内部块图IBD)、4种行为图(如活动图AD、序列图SD)和需求图(REQ),覆盖需求、结构、行为及参数约束。相比UML(面向软件),SysML精简图表(9 vs 13),强化需求追踪与性能分析(如参数图PD),并支持MBSE(基于模型的系统工程)。需求关系(如满足、验证、派生)在需求图中明确关联设计实现,形成闭环管理。SysML是UML的子集与系统工程扩展

moton2017的博客 1910

For循环中的var与let

一个for循环,分别采用var和let声明变量: window.onload = function () { for (var i = 0; i < 5; i++) { setTimeout(() => { console.log(i) }, 200) } for (let k = 0; k < 5; k++) { setTimeout(() => { console.log(k

Wen1129511的博客 1693

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

php前台循环输出变量值,js for循环输出i为同一值的问题

1、最近开发中遇到一个问题,为什么每次输出都是5,而不是点击每个p,就alert出对应的1,2,3,4,5。代码如下:闭包演示12345window.onload=function() {var ps = document.getElementsByTagName("p");for( var i=0; ips[i].onclick = function() {alert(i);}}}此时点击任意p...

weixin_26918763的博客 257

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

for循环中var和let的迥异

昨天看到一同学碰到一个js的for循环问题,没想到使用for和使用var竟然有这么大的不同,之前都没有注意到这个问题,今天就写下记录下我的一些见解,如有不对之处,请做个正义的键盘侠狠狠的批评指正我。感谢感谢。。。代码对比: 我们不禁会产生这样的疑问? 为什么 用let就可以显示正确结果,而var就不可以呢?因为var是全局作用域,有变量提升的作用,所以在for中定义一个变量,全局可以使用,循环中的每一次给变量i赋值都是给全局变量i赋值。 另外这也牵涉到异步。 在var里面: setTimeout是异步执⾏,

m0_64288219的博客 485

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

JavaScript中几种常用的解决for循环中引用同一循环变量对象的方法

JavaScript中几种常用的解决for循环中引用同一循环变量对象的方法 示例代码前提:HTML代码默认如下 0 1 2 3 4 5 在日常编写JS代码时,我们经常会遇到类似于下面这种情况:   想让每个按钮被点击时,引用被点击的那个按钮的索引,类似于如下情况 var btns = document.getElementsByTagNa

長风的博客 3814

shell for循环、循环变量值付给其他shell脚本

本文主要将在shell中如何编写for循环,并将循环变量作为下个shell脚本的参数。

July_whj 2万+

html怎么循环输出_for 循环疑难点

for循环1.如下代码会打印几次呢?for i in range(4): print(i) i = 10会打印4次。第一次循环 :i = 0,print输出后,i = 10 覆盖掉 i = 0。当 i = 10 进入for循环前之时,for循环再次给i 赋值: i = 1 重新覆盖掉 i = 10。循环往复。2.for循环内部的初始化dict1 = {'id':0,'name':'...

weixin_39927378的博客 1538

JS for循环输出i为同一值问题

问题:每次弹出for循环的最后一个值,而不是点击每个p就弹出对应的值? <p>1</p> <p>2</p> <p>3</p> <script> window.onload = function () { var ps=document.getElementsByTagName('p'); for(var i=0; i<ps.length; i++){ ps

hr226的博客 1615

java把for循环的变量输出,shell for循环、循环变量值付给其他shell脚本

本文主要将在shell中如何编写for循环,并将循环变量作为下个shell脚本的参数。shell for 循环:#!第一种写法 类似C、Javafor ((i=1; i<=100; i ++))doecho $idone#!第二种写法 in应用for i in {1..100}doecho $idone#!第三种写法 seq 使用for i in `seq 1 100`doecho $ido...

weixin_31321851的博客 373

JS中解决for循环中引用同一循环变量对象的方法

JS中解决for循环中引用同一循环变量对象的方法 方法一:在点击函数前存储循环变量 i 的值 for(var i=0;i<btns.length;i++){ btns[i].index = i; btns[i].onclick = function(){ alert(this.index+1); } 方法二:用ECMA新增let关键词代替var let关键字,将变量绑定在声明它的作用...

weixin_41919354的博客 1191

python for循环在每次循环时都会更新条件中的相关变量值

我去,困扰我小半个上午的问题终于悟到了。。。 得到两个很简单但平时不怎么注意到的结论: for循环在每次循环时都会更新判断条件中的变量值,相当于每次判断的时候都会以变量最新值来判断是否满足循环条件,而不是一直保持初次进行判断时候的值。如for col in cols:如果循环体中改变了cols,那么下次循环时cols就按最新的来。 for col in cols:看着像是以cols中的元素值进行判断,其实使用的是索引,每次循环其实改变的是索引i, col是以索引取出的值cols[i]。结合上一条容易发.

小张快冲 5135

玩转C语言for循环语句

本文章主要介绍C语言中的for循环语句

2401_84689376的博客 1万+

Java for循环和定义变量值的问题

Java for循环和定义变量值的问题 下面的代码为什么会进不去for循环而导致最后一行 报错:java: 可能尚未初始化变量sum 按道理应该是能进入for循环的,是因为可能进不去,所以先报错了吗。 int sum; for (int i =1 ;i <= 100;i++){ if (i % 2 != 0){ System.out.println(i); sum = i;

i_am_handsome_的博客 1479

shell脚本之循环语句详解(for、while 、until循环语句)

for语句循环 遍历的过程:把文本中所有的内容都执行一遍 for 变量名 in 取值列表 do 命令序列(命令行) done 空格 tab键 换行,去取for循环去遍历的列表 每一次遍历去执行一次do的操作 格式: i+=2 i=i+2 ...

weixin_44324367的博客 6万+

linux脚本一直循环输出原因,Shell 脚本关于循环的一些总结

原标题:Shell 脚本关于循环的一些总结转自:良许Linux不管是哪一门计算机语言,循环都是不可绕开的一个话题,Shell 当然也不是例外。下面总结一些 Shell 脚本里常用的循环相关的知识点,新手朋友可以参考。for 循环Shell 脚本里最简单的循环当属for循环,有编程基础的朋友应该都有使用过 for 循环。最简单的 for 循环如下所示,你只需将变量值依次写在 in 后面即可:#!/b...

weixin_42213784的博客 338

linux脚本一直循环输出原因,Shell脚本中循环的总结

今天小编要跟大家分享的文章是关于Shell脚本中关于循环的总结。不管是哪一门计算机语言,循环都是不可绕开的一个话题,Shell当然也不是例外。下面总结一些 Shell 脚本里常用的循环相关的知识点,新手朋友可以参考。下面来和小编一起看一看吧!一、for 循环Shell 脚本里最简单的循环当属 for 循环,有编程基础的朋友应该都有使用过 for 循环。最简单的 for 循环如下所示,你只需将变量值...

weixin_39847437的博客 379
上一篇: Vue之filters--v-bind
下一篇: gulp基础使用
github_turboemily
博客等级 码龄10年 16粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值