【逆战班】

循环嵌套是指在一个循环语句中再定义一个循环语句的语法结构,外循环执行一次,内循环全部执行完,直到外循环执行完毕,整个循环结束。

while、do.. while和for循环语句都可以进行嵌套,并且他们之间可以进行互相嵌套。最常见的是在for循环中嵌套for循环。格式如下:

for (循环变量初始值; 循环条件; 步长)

{

循环体

.......

for (循环变量初始值; 循环条件; 步长)

{

循环体

........

}

}

例子一:

利用循环嵌套输出一个金字塔形状的三角形:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>

    <script>

        for (var j = 1; j <= 5; j++) {//外层循环表示有多少行

            for(var k=1;k<=5-j;k++){//内层循环体一:控制每一层开始输出及格空格符

                    document.write('&nbsp;');

                }

            for (var i = 1; i <= j; i++) {//内层循环体二:控制输出 * 的个数

                document.write('* ');

            }

            document.write('<br>');//每打印一行进行换行操作

        }

    </script>

</body>

</html>

运行结果如下:

在其中定义了两层 for 循环,分别为外层循环和内层循环,外层循环用于控制输出的行数。内层循环体一用于控制每一行开始输出空格的个数,内层循环体二用于控制每一行输出“* ”的个数,最后输出一个三角形。具体执行步骤如下:

第一步:执行外层循环,定义变量j并赋值为1,j<=5结果为true,进入外层循环。

第二步:执行内层循环体一,定义变量k并赋值为1,此时j的值为1,k<=5-1结果为true ,进入内存循环体一。

第三部:执行内存循环体一的语句,输出一个空格符。

第四部:执行内层循环体一的步长k++;此时k=2。

第五步:继续执行内层循环体一,执行顺序同第二、三、四步一样,直到k=5内层循环体一执行完毕,第一行输出四个空格符。

第六步:执行内层循环体二,定义变量i并赋值为1,i<=1结果为true,进入内层循环体二。

第七部:执行内层循环体二的语句,输出一个“* ”。

第八部:执行内层循环体一的步长i++;此时i=2。

第九步:继续执行内层循环体二,i<=1结果为false,结束内层循环体二。

第十步:执行外层循环语句,换行。

第十一步:执行外层循环的步长j++;此时j=2。

第十二步:继续执行外层循环,职业顺序同第一到第十一步。直到j=6整体循环完毕,输出一个三角形。

例子二;

百鸡百钱 : 有一百钱 要买一百鸡,公鸡5钱1只,母鸡3钱1只,仔鸡3只1钱 ,一百钱买一百鸡,每种鸡都要有

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>

    <script>

        for(var x=1;x<=98;x++){//外层循环控制公鸡数量

            for(y=1;y<=98;y++){//中间循环控制母鸡数量

                for(z=1;z<=98;z++){//内层循环控制仔鸡数量

                    if(x*5+y*3+z*1/3==100&&x+y+z==100){//在if语句中写出条件表达式

                        console.log(`公鸡有${x}只,母鸡有${y}只,仔鸡有${z}只`);//在控制台输出结果

                    }

                }

            }

        }

    </script>

</body>

</html>

运行结果如下:

在其中定义了三层循环结构,外层循环控制公鸡数量,中间循环控制母鸡数量,内层循环控制仔鸡数量。具体执行步骤如下:

第一步:执行外层循环,定义变量x并赋值为1,x<=98结果为true,进入外层循环。

第二步:执行中间循环,定义变量y并赋值为1,y<=98结果为true,进入中间循环。

第三部:执行内层循环,定义变量z并赋值为1,z<=98结果为true,进入内层循环。

第四步:执行if 语句,进行条件判断,结果为false,结束if 语句。

第五步:执行内层循环的步长z++;此时z=2。

第六步:继续执行内层循环,直到z=99,结束内层循环。

第七步;执行中间循环的步长y++,此时y=2。

第八步:执行中间循环,y<=98结果为true。进入中间循环。

第九步:执行内层循环,步骤同第三至第六步。

第十步:执行中间循环,直到y=99,结束中间循环。

第十一步:执行外层循环的步长x++,此时x=2。

第十二步:直到x=99整体循环结束。

JS循环嵌套的执行原理的更多相关文章

  1. js解析器的执行原理

    首先看一段代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...

  2. 问题记载——keil中写for循环嵌套

    还是上次的工程,LED灯闪烁.我今天回想一下感觉上次调试的时候还是有点问题,LED0 1和0的翻转时间很奇怪. 所以今天又打开看了看,单步调试,发现for循环嵌套只执行前一个循环,后一个循环根本不执行 ...

  3. 【JS中循环嵌套常见的六大经典例题+六大图形题,你知道哪几个?】

    首先,了解一下循环嵌套的特点:外层循环转一次,内层循环转一圈. 在上一篇随笔中详细介绍了JS中的分支结构和循环结构,我们来简单的回顾一下For循环结构: 1.for循环有三个表达式,分别为: ①定义循 ...

  4. JS循环+循环嵌套+经典例题+图形题

    首先,了解一下循环嵌套的特点:外层循环转一次,内层循环转一圈. 在上一篇随笔中详细介绍了JS中的分支结构和循环结构,我们来简单的回顾一下For循环结构: 1.for循环有三个表达式,分别为: ①定义循 ...

  5. JS中for循环嵌套

    for 循环 for语句也是一种前测试循环语句,但它具有在 执行循环之前初始化变量 和 定义循环后要执行的代码的能力 for循环中专门提供了位置来放置循环的三个表达式 定义一个循环需要做实现这三步: ...

  6. 老李推荐:第5章7节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 循环获取并执行事件 - runMonkeyCycles

    老李推荐:第5章7节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 循环获取并执行事件 - runMonkeyCycles   poptest是国内唯一一家培养测试开 ...

  7. 更快的理解js中循环嵌套

    [循环控制语句] break语句:终止本层循环,继续执行循环后面的语句:(当循环有多层时,break只会跳出一层循环) continue语句:跳过本次循环,继续执行下次循环: (对于for循环,con ...

  8. JS流程控制语句 退出循环break 在while、for、do...while、while循环中使用break语句退出当前循环,直接执行后面的代码。

    退出循环break 在while.for.do...while.while循环中使用break语句退出当前循环,直接执行后面的代码. 格式如下: for(初始条件;判断条件;循环后条件值更新) { i ...

  9. JS疑难点和GC原理

    js解析与序列化json数据(一)json.stringify()的基本用法: 对象有两个方法:stringify()和parse().在最简单的情况下,这两个方法分别用于把JavaScript对象序 ...

随机推荐

  1. volatile、synchronized、ReentrantLock与CAS

    目录 一.JVM内存模型: 二.volatile关键字 1.volatile保证内存可见性. 2.能禁止指令重排序 3.不能保证原子性 三.synchronized关键字 1.内存可见性: 2.操作的 ...

  2. C++ new和delete运算符简介

    在C语言中,动态分配内存用 malloc() 函数,释放内存用 free() 函数.如下所示: ); //分配10个int型的内存空间 free(p); //释放内存 在C++中,这两个函数仍然可以使 ...

  3. Vue+elementUI build打包部署后字体图标丢失问题

    错误描述:Vue+elementUI  build打包部署后字体图标丢失,控制台显示文件element-icons.woff和element-icons.ttf文件404 错误展现: 控制台报错截图 ...

  4. POJ-1811-Prime Test(pollard_rho模板,快速找最小素因子)

    题目传送门 sol:Pollard_Rho的模板题,刚看了Pollard_Rho和Miller_Rabin很多原理性的东西看不懂,只是记住了结论勉强能敲代码. Pollard_Rho #include ...

  5. JsonPath入门教程

    有时候需要从json里面提取相关数据,必须得用到如何提取信息的知识,下面来写一下 语法格式 JsonPath 描述 $ 根节点 @ 当前节点 .or[] 子节点 .. 选择所有符合条件的节点 * 所有 ...

  6. [洛谷P4720] [模板] 扩展卢卡斯

    题目传送门 求组合数的时候,如果模数p是质数,可以用卢卡斯定理解决. 但是卢卡斯定理仅仅适用于p是质数的情况. 当p不是质数的时候,我们就需要用扩展卢卡斯求解. 实际上,扩展卢卡斯=快速幂+快速乘+e ...

  7. Android开发之《libyuv库的使用》

    转自:http://bashell.nodemedia.cn/archives/build-google-libyuv-with-ndk-for-android.html 官方网站:https://c ...

  8. Servlet与JSP概念理解

    Servlet是用Java编写的服务端程序.需要部署到servlet容器上才能运行,tomcat 就是一个servlet容器. 1.Servlet的生命周期 客户端请求该 Servlet --> ...

  9. 在不重启MySQL的情况下用gdb工具设置变量

    前提:此方法只是参考其它博客的一个记录,未经亲自验证 当在mysql客户端设置一些变量时提示如下报错: 于是想能否有办法在不重启的情况下设置这些只读变量,在网上搜索别人的博客后发现如下方法 1.命令行 ...

  10. 机器学习算法的基本知识(使用Python和R代码)

    本篇文章是原文的译文,然后自己对其中做了一些修改和添加内容(随机森林和降维算法).文章简洁地介绍了机器学习的主要算法和一些伪代码,对于初学者有很大帮助,是一篇不错的总结文章,后期可以通过文中提到的算法 ...