For循环中分号隔开的3部分的执行顺序探讨


Posted in Javascript onMay 27, 2014

引发这个问题思考的是一段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 在循环(代码块)已被执行之后执行

Javascript 相关文章推荐
[原创]静态页面也可以实现预览 列表不同的显示方式
Oct 14 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
Jan 24 Javascript
ExtJS的拖拽效果示例
Dec 09 Javascript
js利用数组length属性清空和截短数组的小例子
Jan 15 Javascript
jQuery 取值、赋值的基本方法整理
Mar 31 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
Nov 21 Javascript
bootstrap滚动监控器使用方法解析
Jan 13 Javascript
浅谈javascript的url参数parse和build函数
Mar 04 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
Mar 28 Javascript
ng-repeat指令在迭代对象时的去重方法
Oct 02 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
Sep 02 Javascript
JavaScript实现点击图片换背景
Nov 20 Javascript
浅析javascript中function 的 length 属性
May 27 #Javascript
JavaScript模块随意拖动示例代码
May 27 #Javascript
javascript中不提供sleep功能如何实现这个功能
May 27 #Javascript
js实现网页自动刷新可制作节日倒计时效果
May 27 #Javascript
纯js实现遮罩层效果原理分析
May 27 #Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
May 27 #Javascript
JQuery获取表格数据示例代码
May 26 #Javascript
You might like
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
php中使用临时表查询数据的一个例子
2013/02/03 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
vue-cli系列之vue-cli-service整体架构浅析
2019/01/14 Javascript
Vue动画事件详解及过渡动画实例
2019/02/09 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
史上最全面的Java面试题汇总!
2015/02/03 面试题
函授大专自我鉴定
2013/11/01 职场文书
高中军训感言200字
2014/02/23 职场文书
古汉语文学求职信范文
2014/03/16 职场文书
法定代表人授权委托书
2014/04/04 职场文书
关于远足的感想
2015/08/10 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
关于Vue中的options选项
2022/03/22 Vue.js