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 11 Javascript
原生js实现shift/ctrl/alt按键的获取
Apr 08 Javascript
js 获取和设置css3 属性值的实现方法
May 06 Javascript
js 控制页面跳转的5种方法
Sep 09 Javascript
理解JavaScript的变量的入门教程
Jul 07 Javascript
轻松实现javascript数据双向绑定
Nov 11 Javascript
JS控制FileUpload的上传文件类型实例代码
Oct 07 Javascript
JS前端加密算法示例
Dec 22 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 Javascript
基于axios 解决跨域cookie丢失的问题
Sep 26 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
Oct 24 Javascript
深入详解JS函数的柯里化
Jun 09 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
解析在zend Farmework下如何创立一个FORM表单
2013/06/28 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
利用php输出不同的心形图案
2016/04/22 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
jquery 延迟执行实例介绍
2013/08/20 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
基于vue展开收起动画的示例代码
2018/07/05 Javascript
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
python用来获得图片exif信息的库实例分析
2015/03/16 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
python实现微信自动回复机器人功能
2019/07/11 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
四风问题个人对照检查剖析材料
2014/09/27 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
法定代表人资格证明书
2015/06/18 职场文书
致运动员加油稿
2015/07/21 职场文书
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers