牛刀小试:

for(var i = 0 ; i < 100; i++) {console.log(i);}

var i = 0;//第一个代码段

i < 100; //第二个代码段

i++; //第三个代码段

{console.log(i);}//第四个代码段

我们以"一二三四"来分别代表代码段一二三四,其实for循环执行顺序是:一二四三(二四三)(二四三)...【如果条件成立二四三会重复执行直到第二个代码段不成立才结束循环】

练习1:用for循环嵌套打印乘法口诀

1*1=1
2*1=1 2*2=4
3*1=3 3*2=6 3*3=9
.....
........
9*1=9 9*2=18 ......9*9=91

//设i,j两个变量,它们的初始值都是1, i最大值为9 j最大值也为9   j永远小于等于i
for (var i = 1; i <= 9; i++) { //外层循环
for (var j = 1; j <= i; j++) { //内层循环 document.writeln(i + "*" + j + "=" + (i * j) + "&nbsp;&nbsp;&nbsp;"); } document.write('<br>');
}

这代码转为流程图如下:

练习2:打印10以内的质数(质数就是大于1而且只能被1与自身整除的正整数)

这题可以有两种写法,下面是采用continue的写法,也可以用break实现打印10以内的质数:

A:
for(var i =2; i<10; i++){ for(var j=2; j<i; j++){ //思考下为什么这边为啥用‘<’而不用‘<=’
console.log( i+'-'+j ); if( i%j==0){ continue A; } } document.write( '10以内的质数是' + i +'<br>' );
}

一开始,i是2,j也是2,j<i不成立那么直接

document.write( '10以内的质数是' + 2 +'<br>' );

接着,i是3,j是2,j<i成立,console.log( 3+'-'+2 );
3%2==0不成立,那么j++
再接着,i是3,j是3,j<i不成立那么直接
document.write( '10以内的质数是' + 3 +'<br>' );

继续,i是4,j是2,j<i成立,
console.log( 4+'-'+2 );
4%2==0成立,所以continue A;(跳出内存for循环,继续执行执行外层A结构体)

继续,i是5,j是2,j<i成立,
console.log( 5+'-'+2 );
5%2==0不成立,j++
下面i是5,j是3,j<i成立,
console.log( 5+'-'+3 );
5%3==0不成立,j++
下面i是5,j是4,j<i成立,
console.log( 5+'-'+4 );
5%4==0不成立,j++
下面i是5,j是5,j<i不成立,
document.write( '10以内的质数是' + 5 +'<br>' );
...
...
......后面不一一略举了...... 总之,理解了for循环的运行流程才算是编程入门,结果出来了,要多想想为什么结果是这样,浏览器是内部运行js代码的流程是咋样的,下面附上运行结果截图

 
 

全面解析for循环的更多相关文章

  1. 解析spring循环依赖策略

    循环依赖 所谓循环依赖就是多个Bean之间依赖关系形成一个闭环,例如A->B->C->...->A 这种情况,当然,最简单的循环依赖就是2个Bean之间互相依赖:A->B ...

  2. Netty源码解析 -- 事件循环机制实现原理

    本文主要分享Netty中事件循环机制的实现. 源码分析基于Netty 4.1 EventLoop 前面分享服务端和客户端启动过程的文章中说过,Netty通过事件循环机制(EventLoop)处理IO事 ...

  3. 解析for循环

    循环的作用就是让一个程序.连续进行一遍又一遍的循环: for循环: 分为四大类: 初始状态:相当于他一开始的数值,或条件: 循环条件:满足进行循环,不满足则停止: 循环体:循环的东西,程序: 状态改变 ...

  4. Java循环解析

    Java循环解析 while循环(先判断) int i=0; while (i<100){    i++;    System.out.println(i); } DoWhile循环(先执行,后 ...

  5. 使用JsonObject解析json

    第一种: [ { "0": "1", "1": "一", "id": "1", ...

  6. C#实现DNS解析服务

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnUAAAENCAIAAADmDAQyAAAat0lEQVR4nO3dbXRU9YHH8ftq2+1uT7

  7. JavaScript是如何工作的:事件循环和异步编程的崛起 + 5种使用 async/await 更好地编码方式!

    摘要: 深度理解JS事件循环!!! 原文:JavaScript是如何工作的:事件循环和异步编程的崛起+ 5种使用 async/await 更好地编码方式! 作者:前端小智 Fundebug经授权转载, ...

  8. 6 admin(注册设计)源码解析、单例模式

    1.单例模式 https://www.cnblogs.com/yuanchenqi/articles/8323452.html 单例模式(Singleton Pattern)是一种常用的软件设计模式, ...

  9. jquery测试解析

    1.下列获取元素范围大小顺序错误的是 (选择一项) 1 A: B: C: D: 本题选择D 解析: 获取元素范围大小顺序依次为: $(#one).siblings("div")&g ...

随机推荐

  1. RabbitMQ入门-Topic模式

    上篇<RabbitMQ入门-Routing直连模式>我们介绍了可以定向发送消息,并可以根据自定义规则派发消息.看起来,这个Routing模式已经算灵活的了,但是,这还不够,我们还有更加多样 ...

  2. 用户单独管理Jenkins的某些项目

    管理用户: 建立用户: 安装Role-Based Strategy插件 安装插件后,进入系统设置页面,配置如下: 在系统管理页面点击Manage and Assign Roles进入角色管理页面: 1 ...

  3. MySQL checkpoint深入分析

    1.日常关注点的问题 2.日志点分析 3.checkpoint:脏页刷盘的检查点 4.模糊检查点发生条件 1.master thread checkpoint 2.flush_lru_list che ...

  4. noip冲刺赛第五次考试

    1.公约数 (gcd.cpp\c\pas) [问题描述] 给定一个正整数,在[1,n]的范围内,求出有多少个无序数对(a,b)满足 gcd(a,b)=a xor b. [输入格式] 输入共一行,一个正 ...

  5. java中string.trim()函数的使用

    java中string.trim()函数的的作用是去掉字符串开头和结尾的空格,防止不必要的空格导致的错误. public static void main(String arg[]){ String ...

  6. 【FAQ系列】:DB服务器产生大量物理读问题优化思路

    一 [现象] 1.7点到9点IO监控指标util特别高,如下: 2 .查看读写情况:读产生很高的物理IO,如下 [分析]:对比其他服务器,buffer pool都是80G,正常情况下热点数据都是从bu ...

  7. Akka(17): Stream:数据流基础组件-Source,Flow,Sink简介

    在大数据程序流行的今天,许多程序都面临着共同的难题:程序输入数据趋于无限大,抵达时间又不确定.一般的解决方法是采用回调函数(callback-function)来实现的,但这样的解决方案很容易造成“回 ...

  8. js通过添加随机数的方法,解决多张图片加载时由于缓存导致图片无法正确显示的问题

    问题出现描述:当对列表中某个图片进行重新编辑时,提交后会发现图片列表仍会出现修改之前的图片,新图片并未覆盖. 问题出现原因:缓存问题. 解决办法:通过js方法,在每张图片路劲后面添加一个随机数,这样每 ...

  9. let、var、const声明的区别

    前言 看了方应杭老师的一篇解释let的文章,对JavaScript中的声明有了深刻的理解,这里也就有了总结一下JavaScript中各种声明之间区别的这篇文章. JavaScript中变量声明机制 首 ...

  10. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(三)用户接口层之RTSP命令

    截至版本1.2.3,myRtspClient函数库共支持以下6个RTSP命令: (1)OPTIONS (2)DESCRIBE (3)SETUP (4)PLAY (5)PAUSE (6)TEARDOWN ...