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 ui1.7 dialog只能弹出一次问题
Aug 27 Javascript
javascript控制frame,iframe的src属性代码
Dec 31 Javascript
Jquery中对数组的操作代码
Aug 12 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
Mar 26 Javascript
node.js中的fs.truncate方法使用说明
Dec 15 Javascript
简介AngularJS中$http服务的用法
Feb 06 Javascript
完美解决JS文件页面加载时的阻塞问题
Dec 18 Javascript
原生js实现吸顶效果
Mar 13 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
Apr 13 Javascript
JS 设置Cookie 有效期 检测cookie
Jun 15 Javascript
JS实现的视频弹幕效果示例
Aug 17 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
Jan 12 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二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
PHP间隔一段时间执行代码的方法
2014/12/02 PHP
php使用cookie保存用户登录的用户名实例
2015/01/26 PHP
Laravel中注册Facades的步骤详解
2016/03/16 PHP
利用ajax和PHP实现简单的流程管理
2017/03/23 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
关于跨站脚本攻击问题
2011/12/22 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
node.js中的console.info方法使用说明
2014/12/09 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
node.js基础知识小结
2018/02/26 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
vue中实现回车键登录功能
2020/02/19 Javascript
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
numpy中的meshgrid函数的使用
2019/07/31 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
Python grpc超时机制代码示例
2020/09/14 Python
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
幼儿教师自我鉴定
2013/11/02 职场文书
人力资源专业推荐信
2013/11/29 职场文书
《与象共舞》教学反思
2014/02/24 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
单位婚育证明范本
2014/11/21 职场文书
党员个人党性分析材料
2014/12/18 职场文书
新郎婚礼致辞
2015/07/27 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
MySQL分库分表详情
2021/09/25 MySQL