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_03(ExtJs Grid的简单使用)
Oct 02 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
May 03 Javascript
JavaScript 总结几个提高性能知识点(推荐)
Feb 20 Javascript
socket.io学习教程之基础介绍(一)
Apr 29 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
Jun 17 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
Jul 05 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
Sep 20 Javascript
详解在vue-cli中使用路由
Sep 25 Javascript
vue组件挂载到全局方法的示例代码
Aug 02 Javascript
JavaScript错误处理操作实例详解
Jan 04 Javascript
node.js 微信开发之定时获取access_token
Feb 07 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
May 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
桌面中心(三)修改数据库
2006/10/09 PHP
php 空格,换行,跳格使用说明
2009/12/18 PHP
使用php统计字符串中中英文字符的个数
2013/06/23 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
运算符&amp;&amp;的三个不同层次
2013/04/07 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
谈一谈javascript中继承的多种方式
2016/02/19 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
微信小程序 animation API详解及实例代码
2016/10/08 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
图片文字识别(OCR)插件Ocrad.js教程
2018/11/26 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
python爬虫-模拟微博登录功能
2019/09/12 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
Funko官方商店:源自美国,畅销全球搪胶收藏玩偶
2018/09/15 全球购物
项目考察欢迎辞
2014/01/17 职场文书
工会趣味活动方案
2014/08/18 职场文书
检讨书范文1000字
2015/01/28 职场文书
质量保证书格式模板
2015/02/27 职场文书
会议简报格式范文
2015/07/20 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
干部理论学习心得体会
2016/01/21 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python
如何用H5实现好玩的2048小游戏
2022/07/23 HTML / CSS