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实现导航固定顶部的效果仿蘑菇街
Oct 22 Javascript
基于jquery实现简单的手风琴特效
Nov 24 Javascript
jQuery动态生成不规则表格(前后端)
Feb 21 Javascript
AngularJS表格样式简单设置方法示例
Mar 03 Javascript
js上下视差滚动简单实现代码
Mar 07 Javascript
Vue 父子组件、组件间通信
Mar 08 Javascript
react中的ajax封装实例详解
Oct 17 Javascript
浅谈vue-cli 3.0.x 初体验
Apr 11 Javascript
深入Node TCP模块的理解
Mar 13 Javascript
JS sort方法基于数组对象属性值排序
Jul 10 Javascript
Javascript生成器(Generator)的介绍与使用
Jan 31 Javascript
uni-app 微信小程序授权登录的实现步骤
Feb 18 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
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
PHP常用编译参数中文说明
2014/09/27 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
JS delegate与live浅析
2013/12/21 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
Vue 动态组件与 v-once 指令的实现
2019/02/12 Javascript
原生JS实现萤火虫效果
2020/03/07 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
python模块restful使用方法实例
2013/12/10 Python
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
python 性能优化方法小结
2017/03/31 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
python中实现字符串翻转的方法
2018/07/11 Python
python实现随机梯度下降法
2020/03/24 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
校庆活动策划方案
2014/06/05 职场文书
节水口号标语
2014/06/19 职场文书
2014业务员年终工作总结
2014/12/09 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS