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 相关文章推荐
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
Jun 25 Javascript
js定时器的使用(实例讲解)
Jan 06 Javascript
jQuery实现倒计时按钮功能代码分享
Sep 03 Javascript
纯Javascript实现ping功能的方法
Mar 20 Javascript
JavaScript操作XML文件之XML读取方法
Jun 09 Javascript
js实现匹配时换色的输入提示特效代码
Aug 17 Javascript
理解javascript定时器中的setTimeout与setInterval
Feb 23 Javascript
限制只能输入数字的实现代码
May 16 Javascript
jQuery+HTML5实现弹出创意搜索框层
Dec 29 Javascript
javaScript封装的各种写法
Aug 14 Javascript
webpack打包node.js后端项目的方法
Mar 10 Javascript
js实现数字从零慢慢增加到指定数字示例
Nov 07 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
php小偷相关截取函数备忘
2010/11/28 PHP
遍历指定目录下的所有目录和文件的php代码
2011/11/27 PHP
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
angularJS 如何读写缓冲的方法(推荐)
2016/08/06 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
angular动态表单制作
2018/02/23 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
JavaScript仿京东轮播图效果
2021/02/25 Javascript
python 实现删除文件或文件夹实例详解
2016/12/04 Python
python 编写简单网页服务器的实例
2018/06/01 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
python使用sessions模拟登录淘宝的方式
2019/08/16 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
tensorflow多维张量计算实例
2020/02/11 Python
python如何将两张图片生成为全景图片
2020/03/05 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
AJAX的全称是什么
2012/11/06 面试题
纪念建党演讲稿范文
2014/01/13 职场文书
《纸船和风筝》教学反思
2014/02/15 职场文书
有趣的广告词
2014/03/18 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
合伙经营协议书
2014/04/18 职场文书
应届生面试求职信
2014/07/02 职场文书
2014年会计工作总结
2014/11/27 职场文书
交通安全温馨提示语
2015/07/14 职场文书
详解Django的MVT设计模式
2021/04/29 Python
SQL Server内存机制浅探
2022/04/06 SQL Server
Elasticsearch 聚合查询和排序
2022/04/19 Python