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 相关文章推荐
JavaScript定义类或函数的几种方式小结
Jan 09 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
Mar 07 Javascript
原生js编写autoComplete插件
Apr 13 Javascript
Angular.JS学习之依赖注入$injector详析
Oct 20 Javascript
js数字滑动时钟的简单实现(示例讲解)
Aug 14 Javascript
Vue路由history模式解决404问题的几种方法
Sep 29 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
May 23 Javascript
js实现蒙版效果
Jan 11 Javascript
详解Vue3 Composition API中的提取和重用逻辑
Apr 29 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
Sep 16 Javascript
vue实现可以快进后退的跑马灯组件
Apr 08 Vue.js
JS实现页面炫酷的时钟特效示例
Aug 14 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上传文件,创建递归目录的实例代码
2013/10/18 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
php可变长参数处理函数详解
2017/02/22 PHP
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
javascript常用的方法整理
2015/08/20 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
python实现实时监控文件的方法
2016/08/26 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
python如何修改装饰器中参数
2018/03/20 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
python如何求解两数的最大公约数
2018/09/27 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
服务型党组织建设典型材料
2014/05/07 职场文书
开发房地产协议书
2014/09/14 职场文书
陕西导游词
2015/02/04 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
python实现三次密码验证的示例
2021/04/29 Python
canvas实现贪食蛇的实践
2022/02/15 Javascript
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫
Python利用FlashText算法实现替换字符串
2022/03/31 Python