这篇文章主要探讨了For循环中分号隔开的3部分的执行顺序,需要的朋友可以参考下
引发这个问题思考的是一段js程序的运行结果:
 
var i = 0;
function a(){
for(i=0;i<20;i++){
}
}
function b(){
for(i=0;i<3;i++){
a();
}
return i;
}
var Result = b();

这段程序的运行结果是Result = 21;

从这段程序中我们可以看出,i在a函数返回的时候值是20这是没有问题的。
而在b函数返回的时候,i的值是20还是21就值得讨论了。
问题的本质即:先进行了判断i<3,还是先进行了i++,再判断是否i<3.

根据执行的结果可以看出,是先执行了i++的。
 
function a(){
for(i=0;i<20;i++){
// 没有 var i
//这里的i就是全局变量所有人可以访问
}
}
function b(){
for(i=0;i<3;i++){
//alert(i);//同理这里的i也是全局变量,返回0且只有一次返回
a();//这个函数返回是i=20
//当i=20 经过 i++后 i=21 那么就不符合i<3的条件,直接退出。所以return i=21 这很正常!
}
return i;
}
var Result = b();

在此我们补完for循环的执行顺序:
以下面程序为例
 
for(int i=0;i<10;i++)
{
}

首先执行i=0;i<10; 然后执行第一轮循环体
然后执行:i++,i<10; 然后执行第二轮循环体
直到最后一次 i++后 i >=10,此时循环结束。



语句 1 在循环(代码块)开始前执行

语句 2 定义运行循环(代码块)的条件

语句 3 在循环(代码块)已被执行之后执行
最新资讯
驰援武汉 高榕资本向武汉慈善总会捐款100万元

驰援武汉 高榕资本向

武汉新型肺炎疫情牵动全国关注,高榕资本向武汉市慈善总
科学家公布新型冠状病毒3CL水解酶高分辨率晶体结构

科学家公布新型冠状病

继1月25日上海科技大学免疫化学研究所和中国科学院上
湖北移动新建武汉第二座“小汤山”医院5G网络

湖北移动新建武汉第二

截至1月26日12时,武汉移动已完成军运村4G和5G优化工作,
唯品会向湖北省和武汉市捐赠2000万元抗击疫情

唯品会向湖北省和武汉

唯品会在其官微宣布,向湖北省和武汉市捐赠2000万元,用于
携程提升重大灾害保障金至2亿 推团队游特殊退订政策

携程提升重大灾害保障

携程推出被暂停团队游特殊退订政策,并将此前启动的重大
华为向武汉慈善总会账户捐赠3000万元 用于疫情防控

华为向武汉慈善总会账

华为在微博宣布,向武汉市慈善总会账户捐赠3000万人民币
最新文章
jQuery设置下拉框显示与隐藏效果的方法分析

jQuery设置下拉框显示

这篇文章主要介绍了jQuery设置下拉框显示与隐藏效果的
策略模式实现 Vue 动态表单验证的方法

策略模式实现 Vue 动

策略模式(Strategy Pattern)又称政策模式,其定义一系列的
Layui Form 自定义验证的实例代码

Layui Form 自定义验

今天小编就为大家分享一篇Layui Form 自定义验证的实
图解NodeJS实现登录注册功能

图解NodeJS实现登录注

这篇文章主要介绍了NodeJS实现登录注册功能,本文图文
基于Layui自定义模块的使用方法详解

基于Layui自定义模块

今天小编就为大家分享一篇基于Layui自定义模块的使用
layer弹出层自适应高度,垂直水平居中的实现

layer弹出层自适应高

今天小编就为大家分享一篇layer弹出层自适应高度,垂直