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 相关文章推荐
AJAX架构之Dojo篇
Apr 10 Javascript
JavaScript 版本自动生成文章摘要
Jul 23 Javascript
Javascript图片上传前的本地预览实例
Jun 16 Javascript
JavaScript中实现继承的三种方式和实例
Jan 29 Javascript
jQuery实现自定义事件的方法
Apr 17 Javascript
jQuery根据表单name获取值的方法
May 24 Javascript
用AngularJS来实现监察表单按钮的禁用效果
Nov 02 Javascript
vue.js的提示组件
Mar 02 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
Mar 23 jQuery
jQuery实现碰到边缘反弹的动画效果
Feb 24 jQuery
7个好用的JavaScript技巧分享(译)
May 07 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
Oct 15 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 无限极分类
2008/03/27 PHP
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
2016/05/26 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
Angular 向组件传递模板的两种方法
2018/02/23 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
python中pika模块问题的深入探究
2018/10/13 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
python针对不定分隔符切割提取字符串的方法
2018/10/26 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
python实现感知机模型的示例
2020/09/30 Python
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
老公保证书范文
2014/04/29 职场文书
商业项目策划方案
2014/06/05 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
计划生育工作汇报
2014/10/28 职场文书
2014年党委工作总结
2014/11/22 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL
我的收音机情缘
2022/04/05 无线电