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 相关文章推荐
从零开始学习jQuery (八) 插播:jQuery实施方案
Feb 23 Javascript
js防止表单重复提交实现代码
Sep 05 Javascript
ListBox实现上移,下移,左移,右移的简单实例
Feb 13 Javascript
js/jquery获取文本框输入焦点的方法
Mar 04 Javascript
js日期联动示例
May 02 Javascript
JavaScript接口的实现三种方式(推荐)
Jun 14 Javascript
BootStrap中的表单大全
Sep 07 Javascript
jquery属性,遍历,HTML操作方法详解
Sep 17 Javascript
微信小程序仿美团城市选择
Jun 06 Javascript
小程序实现单选多选功能
Nov 04 Javascript
ES6 fetch函数与后台交互实现
Nov 14 Javascript
Vue混入mixins滚动触底的方法
Nov 22 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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
社区(php&amp;&amp;mysql)二
2006/10/09 PHP
php 什么是PEAR?(第二篇)
2009/03/19 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
Js利用prototype自定义数组方法示例
2017/10/20 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
对python中字典keys,values,items的使用详解
2019/02/03 Python
python返回数组的索引实例
2019/11/28 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
阿联酋航空假期:Emirates Holidays
2018/03/20 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
师范生实习自我鉴定
2013/11/01 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android