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数组的扩展实现代码集合
Jun 01 Javascript
jQuery插件 tabBox实现代码
Feb 09 Javascript
用jquery中插件dialog实现弹框效果实例代码
Nov 15 Javascript
Google 地图API资料整理及详细介绍
Aug 06 Javascript
BootStrap中的表单大全
Sep 07 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
Dec 01 Javascript
vue教程之toast弹框全局调用示例详解
Aug 24 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
Mar 06 Javascript
微信小程序将字符串生成二维码图片的操作方法
Jul 17 Javascript
vue-router跳转时打开新页面的两种方法
Jul 29 Javascript
原生js实现表格循环滚动
Nov 24 Javascript
手动实现vue2.0的双向数据绑定原理详解
Feb 06 Vue.js
浅析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 at(@)符号的用法简介
2009/07/11 PHP
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
Three.js学习之网格
2016/08/10 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
浅谈小程序globalData的那些事儿
2019/11/01 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
vue实现放大镜效果
2020/09/17 Javascript
urllib2自定义opener详解
2014/02/07 Python
Django Admin实现上传图片校验功能
2016/03/06 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
客户代表实习人员自我鉴定
2013/09/27 职场文书
物流专业大学应届生求职信
2013/11/03 职场文书
外贸采购员求职的自我评价
2013/11/26 职场文书
材料物理专业个人求职信
2013/12/15 职场文书
党员民主评议自我评价
2014/10/20 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
纪委立案决定书
2015/06/24 职场文书
element多个表单校验的实现
2021/05/27 Javascript
Github 使用python对copilot做些简单使用测试
2022/04/14 Python
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers