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实例教程(19) 使用HoTMetal(3)
Dec 23 Javascript
jQuery 计算iframe 窗口大小的方法
May 13 Javascript
javascript弹出拖动窗口
Aug 11 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
Jun 24 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
Oct 10 Javascript
JavaScript常见的五种数组去重的方式
Dec 15 Javascript
详解jquery validate实现表单验证 (正则表达式)
Jan 18 Javascript
jQuery日期范围选择器附源码下载
May 23 jQuery
vue-lazyload图片延迟加载插件的实例讲解
Feb 09 Javascript
Vue Router的懒加载路径的解决方法
Jun 21 Javascript
Vue.set 全局操作简单示例
Sep 19 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
Dec 13 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获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
PHP连接SQLServer2005的方法
2015/01/27 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
JavaScript 事件系统
2010/07/22 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
对django中foreignkey的简单使用详解
2019/07/28 Python
简单的Python调度器Schedule详解
2019/08/30 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
python 弧度与角度互转实例
2020/04/15 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
乌克兰在线商店的价格比较:Price.ua
2019/07/26 全球购物
介绍一下Linux文件的记录形式
2013/09/29 面试题
灵泰克Java笔试题
2016/01/09 面试题
工程类专业自荐信范文
2014/03/09 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
全陪导游词开场白
2015/05/29 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python