javaScript:for循环的认识与使用,以及奇葩for循环

news2024/11/25 19:45:01

目录

前言

基本的 for 循环通常有三个关键组成部分

一.javaScript中的循环都有那些(补充)

二.for循环​

语法/理解​

执行过程(重点)​

 注意

三. 基本for循环小练习

1.求1-100的偶数和,包含1和100

2.求1-100中所有3的倍数之和

四.循环的嵌套(重点)​

什么是循环嵌套

 适用场景

示例 

循环嵌套小练习

1.打印4行4列圆点

js部分

css部分 

解析 

 2.打印九九乘法表(使用表格)

方法一

解析 

方法二

解析

五.奇葩for循环 

1.没有初始值的for循环

解析        

注意

2.没有初始值和判断是否满足循环条件

解析

3.没有初始值没有判断条件没有递增(无限/死循环)

解析

4.判断条件有多个 

解析


前言

      在编程中,重复操作是一项非常常见且必要的任务。为了简化重复操作的过程,我们使用循环结构来有效地处理这些需求。其中最常见且强大的循环结构之一是 for 循环。for 循环是一种遍历、迭代和执行特定代码块的控制结构,使程序能够根据指定的条件重复执行特定的代码。它在许多编程语言中都有广泛的应用,并被认为是掌握编程基础的重要一步。

基本的 for 循环通常有三个关键组成部分:

       初始化表达式、循环条件和循环迭代。通过设定这些部分,我们可以指定循环的起始点、终止条件以及每次迭代后的操作。示例的基本语法如下:

for (初始化表达式; 循环条件; 循环迭代) {
  // 循环体的代码
}

一.javaScript中的循环都有那些(补充)

1.for循环

2.while

3.do-while

这篇文章主要讲for循环,当然除了for循环外还有while和do-while循环,他们的适用场景不同。

二.for循环

语法/理解

for(循环变量的初始值;循环条件;循环变量的增值){

        循环体,(就是循环要执行的代码)

    }

for (let index = 0; index < array.length; index++) {
        const element = array[index];
        
     }

       对循环条件的理解,是变量满足循环条件的时候,才会执行 循环中的代码只有循环结束,循环后面的代码才能执行

执行过程(重点)

执行过程

    1.首先判断循环变量的初始值,是否满足循环条件

    2.如果满足循环条件,则执行循环体中的代码

    3.循环体中代码执行完毕,然后执行循环变量的增值操作

    4.判断循环变量的当前值是否满足条件

    5.在下一次循环中,依次执行 2 3 4步骤

    6.直到循环变量的当前值 不满足 循环条件,跳出当前循环

 注意

       switch语句中的,continue和break也可以用在for循环语句中。

       continue 当在循环体中执行continue之后,他后面的所有代码都不执行,直接跳出当前循环,执行下一次循环。

       break 当在循环体中执行break之后,直接终止当前for循环。

console.log('=====================');
    for (let m = 0; m < 5; m++) {
        if(m%2==0){
            continue;  //停止当前一次循环,直接进入下一次循环
        }
        console.log(m); 
    }
    console.log('========================');
    // break
    for (let k = 1; k <10; k++) {
        if (k%3==0) {
            console.log(k);
            break;  //终止当前for循环
        }
    }

三. 基本for循环小练习

1.求1-100的偶数和,包含1和100

let shu2 = 0
for (let b = 0; b <=100; b+=2) {
    shu2 += b   
}
    console.log(shu2); 

2.求1-100中所有3的倍数之和

let shu3 = 0
for (let c = 0; c <=100; c+=3) {
    shu3 += c  
}
    console.log(shu3); 

四.循环的嵌套(重点)

什么是循环嵌套

        循环的嵌套是指将一个循环结构放置在另一个循环结构内部的编程技术。通过循环的嵌套,我们可以实现更复杂的重复操作和控制流程。在嵌套循环中,内部的循环会完整地执行一次,然后外部循环执行一次,如此循环嵌套,直到满足外部循环的终止条件。

 /*
    循环嵌套
    */ 
   //    外层控制的是行
   for (let i = 0; i <5; i++) {
    // 内层控制的是列
    for(let k = 0;k <= i ; k++){
        document.write(k)
    }
      document.write('<br/>')
   }

 适用场景

       循环嵌套适用于处理需要以多种方式进行迭代的问题,或者处理二维或多维的数据结构。通过适当组织和控制嵌套循环,可以实现对数据的全面遍历和处理。

示例 

        下面是一个简单的示例,展示了如何使用嵌套循环来打印一个九九乘法表:

for (var i = 1; i <= 9; i++) {
  for (var j = 1; j <= 9; j++) {
    var result = i * j;
    console.log(`${i} * ${j} = ${result}`);
  }
}

        在这个示例中,外部的 i 循环变量用于控制行数,范围是 1 到 9。内部的 j 循环变量用于控制列数,同样范围也是 1 到 9。在每一次内部循环中,我们计算乘法结果,并打印输出表达式和结果。通过嵌套循环,我们可以遍历每一个乘法表的格子,并打印相应的结果。需要注意的是,嵌套循环可以有任意多个层级,每个内部循环都会完整地执行一次,然后外部循环才会执行下一次迭代。循环嵌套的层级和逻辑需根据具体问题进行设计,并根据实际需求进行合适的控制。当你遇到需要在多个维度上进行迭代和处理的问题时,嵌套循环是一种强大而常用的技术。但需要注意的是,过度嵌套循环可能会导致代码的复杂性和性能问题,因此在设计和使用嵌套循环时应谨慎评估和优化。

循环嵌套小练习

1.打印4行4列圆点

js部分

 //双重for循环绘制
   for (let a = 0; a <4; a++) {
        for (let b= 0; b<4; b++) {
            document.write('<span></span>')
            
        }
    document.write('<br/>')
   }

css部分 

span{
            display: inline-block;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background: rgb(43, 7, 13);
            margin: 20px;
            box-shadow: 2px 2px 2px rgba(255, 192, 203, 4);
        }

解析 

       通过外层循环控制行数(4 行),内层循环控制列数(4 列)。在每个内部循环中,生成一个 <span> 元素,共执行 4 次。然后,外层循环在每行结束后插入一个 <br/> 标签,形成 4 行的网格。给生成的span标签添加相关样式就能实现4行4列圆点。需要注意的是  document.write('<span></span>') 的意思是在html中生成一个span标签

 2.打印九九乘法表(使用表格)

方法一

//    创建表格// 99乘法表
    document.write('<table border=1 width="840">')
        for (let i = 1; i <= 9; i++) {
            document.write('<tr>')
            for (let k = 1; k <= i; k++) {
                document.write(`<td>${i} X ${k} = ${i*k}</td>`)
             } 
            for (let x = 9-i; x >=1 ; x--) {
                    document.write(`<td></td>`)
                }
              
            document.write('</tr>')
        }
解析 

        这段代码使用了两层嵌套循环。外部循环 i 控制行数,从 1 到 9。内部循环 k 则负责打印每一行中的乘法表达式和结果。首先,使用 ${i} X ${k} = ${i*k} 字符串模板打印出乘法表达式和其结果。接着,在内部循环结束后,使用第二个内部循环 x 来打印剩余的空单元格,以保持表格的对齐性。

        注意,这段代码使用 document.write() 将 HTML 字符串直接写入到文档中。虽然这种方式在简单的情况下可能工作正常,但对于复杂的页面交互和动态性,推荐使用更现代的方法,例如使用 DOM 操作来构建和更新页面内容。

最后,通过这段代码你可以在页面上生成一个九九乘法表的表格,每个单元格中包含乘法表达式和结果,右侧则是一些空的单元格来保持表格的对齐。

方法二

//    创建表格// 99乘法表
document.write('<table border=1 width="840">')
        for (let i = 1; i <= 9; i++) {
            document.write('<tr>')
            for (let k = 1; k <= 9; k++) {
               if(k<=i){
                document.write(`<td>${i} X ${k} = ${i*k}</td>`)
               }else{
                document.write('<td></td>')
               }
             }     
            document.write('</tr>')
        }
解析

       在这段代码中,外层循环 i 用于控制行数,从 1 到 9。内层循环 k 用于打印每一行中的乘法表达式和结果。通过添加条件判断 if (k <= i),我们确保只有当 k 小于等于 i 时才输出乘法表达式和结果,以获得正确的九九乘法表的形式。如果 k 大于 i,则输出一个空的单元格来保持表格的对齐。

        通过这段代码,在页面上创建一个带有 9x9 的乘法表格,每个单元格中包含乘法表达式和结果。对角线上方的单元格会保持为空,并且表格具有边框。

五.奇葩for循环 

1.没有初始值的for循环

 // 没有初始值的for循环
    let k=0
    for ( ; k< 10; k++) {
        console.log(k);
    }
    console.log('================');

解析        

      循环初始化部分 “let k = 0;” 将 k 初始化为 0。然后,在循环条件部分表达式留空,因此循环条件为真。在循环体内部,输出了变量 k 的值,然后通过递增 k 的值来控制循环的迭代。循环将进行 10 次迭代,打印了从 0 到 9 的数值。

注意

        这种奇特的循环结构通常不是常见的用法,并且可能会导致代码可读性和维护性的降低。在编写代码时,建议尽量使用可读性更强的循环结构,并明确地指定循环的初始化、条件和迭代步骤。

2.没有初始值和判断是否满足循环条件

 let m = 0
    for(;;m++){
        if(m<10){
            console.log(m)
        }else{
            break
        }
       
    }

解析

       for 循环的初始化部分没有指定表达式,在条件部分也没有指定条件判断表达式,迭代部分使用 m++ 递增 m 的值。

在循环体内部,首先检查 m 是否小于 10。如果是,则输出 m 的值。如果 m 不满足条件,也就是大于等于 10,那么执行 break 语句来终止循环。

没有初始值和判断是否满足循环条件

如果for循环中没有判断条件那么他的判断条件在循环体内部,并且需要

开发者手动书写跳出循环的操作,因为不会主动跳出循环

3.没有初始值没有判断条件没有递增(无限/死循环)

let n =0;
    for(;;){
        if (n<10) {
            console.log(n);
            n++  //递增
        }else{
            break
        }
    }

解析

       for 循环的初始化部分没有指定任何表达式,条件部分也没有指定任何条件判断表达式,迭代部分也没有指定任何递增或递减操作。这样的循环结构被称为无限循环,它会无限次执行循环体。

       在循环体内部,首先判断变量 m 的值是否小于 10。如果是,就输出 m 的值。如果不满足条件,即 m 大于等于 10,就通过 break 语句跳出循环。

        因为没有明确指定循环条件表达式,所以这个无限循环的结束依赖于在循环体内部的判断和 break 语句。

4.判断条件有多个 

for (let i = 0,j=0; i <6,j<21; i++,j++) {
    sum = i + j
   }
   document.write(sum) //输出40

解析

   for循环,如果他的判断条件具有多个,如下,具有i<6,i<20两个条件,那么只有最后一个条件起到了判断条件的作用,其他判断条件作废。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/867935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DOM的节点操作+事件高级+DOM事件流+事件对象

一.节点操作 1.父节点: node.parentNode 得到的是离元素最近的父级节点 2.子节点: parentNode.childNodes 所有的子节点 包含元素节点 文本节点等等parentNode.children (非标准) 获取所有的子元素节点,实际开发常用 parentNode.firstChild 获取…

JAVA基础补充(Comparable排序接口的实现)

JAVA基础补充&#xff08;Comparable排序接口的实现&#xff09; Comparable接口的实现&#xff1a;没有实现Comparable接口时&#xff0c;取出来的值无法排序如果进行排序&#xff1a;实现接口进行排序&#xff1a;Controller层的实现实体类的实现 复习时间&#xff1a;2023/0…

Spring Cloud面试突击班1

Spring Cloud面试突击班1 1.Spring Cloud 中有哪些组件&#xff0c;整个项目架构中我们的重点又有哪些&#xff1f; Spring Cloud 是一套基于Spring Boot的微服务解决方案。 Spring Cloud生态在国内主流的分为两套&#xff0c;一套是以奈飞开源的Spring Cloud Netfilx 20%&a…

Fiddler抓包工具详细使用教程

各位做测试的同学想必对抓包工具fiddler并不陌生&#xff0c;但是很多同学可能没有总结过它的用法&#xff0c;下面我总结了fiddler一些常用的用法。 Web端抓包配置 打开Fiddler&#xff0c;Tools -> Fiddler Options -> HTTPS 配置完后记得要重启Fiddler 选中Decrpt …

阿里云服务器搭建WordPress建站教程基于Windows系统

本教程是使用阿里云服务器镜像系统选择的是Windows操作系统&#xff0c;手动安装WordPress博客网站全过程。本教程介绍如何在Windows操作系统的ECS实例上搭建WordPress网站。 目录 准备工作 搭建WordPress网站 解析WordPress网站域名 准备工作 创建Windows操作系统的ECS实…

OpenCV实例(八)车牌字符识别技术(三)汉字识别

车牌字符识别技术&#xff08;三&#xff09;汉字识别 1.代码实例2.遇到问题3.汉字识别代码实例 相较于数字和英文字符的识别&#xff0c;汽车牌照中的汉字字符识别的难度更大&#xff0c;主要原因有以下4个方面&#xff1a; (1)字符笔画因切分误差导致非笔画或笔画流失。 (2…

VARIATIONAL IMAGE COMPRESSION WITH A SCALE HYPERPRIOR

文章目录 VARIATIONAL IMAGE COMPRESSION WITH A SCALE HYPERPRIORABSTRACT1 INTRODUCTION2 COMPRESSION WITH VARIATIONAL MODELS3 INTRODUCTION OF A SCALE HYPERPRIOR 个人总结动机流程思路 VARIATIONAL IMAGE COMPRESSION WITH A SCALE HYPERPRIOR ABSTRACT We describe …

【单片机】DS2431,STM32,EEPROM读取与写入

芯片介绍&#xff1a; https://qq742971636.blog.csdn.net/article/details/132164189 接线 串口结果&#xff1a; 部分代码&#xff1a; #include "sys.h" #include "DS2431.h"unsigned char serialNb[8]; unsigned char write_data[128]; unsigned cha…

服务器安装JDK

三种方法 方法一&#xff1a; 方法二&#xff1a; 首先登录到Oracle官网下载JDK JDK上传到服务器中&#xff0c;记住文件上传的位置是在哪里&#xff08;我放的位置在/www/java&#xff09;&#xff0c;然后看下面指示进行安装 方法三&#xff1a; 首先登录到Oracle官网下载…

线性回归学习总结

一 、引文 1 回归分析 回归是统计学上用来分析数据的方法&#xff0c;以了解两个或多个变量之前的关系。通常是建立被解释变量Y和解释变量X之间关系的模型。回归分析的最早形式是最小二乘法。 勒让德和高斯都将该方法应用于从天文观测中确定关于太阳的物体的轨道&#xff08;…

SpringBoot复习:(34)@EnableWebMvc注解为什么让@WebMvcAutoconfiguration失效?

它导入了DelegatingWebMvcConfiguration 它会把容器中的类型为WebMvcConfigurer的bean注入到类型为WebMvcConfigurerComposite的成员变量configurers中。 可以看到它继承了WebMvcConfigurerSupport类 而WebMvcConfigureAutoConfiguration类定义如下 可以看到一个Conditional…

LeetCode98. 验证二叉搜索树

98. 验证二叉搜索树 文章目录 [98. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/)一、题目二、题解方法一&#xff1a;区间划分递归方法二&#xff1a;中序遍历递归迭代 一、题目 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有…

冒泡排序(超详细!)(C语言)

大家好&#xff01;欢迎来到Mr.kanglong的CSDN博文&#xff0c;今天来讨论一下冒泡排序&#xff0c;在百度百科中&#xff0c;关于为什么叫冒泡排序是这样解释的&#xff1a;因为越小的元素会经由交换慢慢“浮”到数列的顶端&#xff08;升序或降序排列&#xff09;&#xff0c…

移动云操作系统改造技术实践分享,跨操作系统云主机迁移优化(一)

近年来&#xff0c;Linux 操作系统在技术、社区和商业化方案均取得了快速发展&#xff0c;移动云先后发布了新一代天元操作系统和易行迁移工具&#xff0c;保障了移动云全场景业务高效迁移。在移动云 CentOS 迁移实践过程中&#xff0c;跨操作系统虚机迁移是改造中的一个重要环…

IP 协议的相关特性和数据链路层相关知识总结

目录 IP 协议的相关特性 一、IP协议的特性 二、 IP协议数据报格式 三、 IP协议的主要功能 1. 地址管理 动态分配 IP地址 NAT机制 NAT背景下的通信 IPV6 2. 路由控制​​​​​​​ 3.IP报文的分片与重组 数据链路层相关知识 1、以太网协议&#xff08;Ethernet&#xff09; 2.M…

“掌握类与对象,点亮编程之路“(下)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:《C语言入门知识》&#x1f649; &#x1f649; 内容推荐:“掌握类与对象&#xff0c;点亮编程之路“(上)&#x1f649; &#x1f439;今日诗词:春风得意马蹄疾&#xff0c;一日看尽长安花&#x1f439; 目录 &…

【十】PageHelper 插件源码分析

PageHelper 插件源码分析 简介&#xff1a; 在开发中经常使用到pagehelper分页插件&#xff0c;一直也只是使用没有深入去分析&#xff0c;今天花时间来研究一下pagehelper的实现原理的&#xff0c;阅读优秀的开源项目总是能有很多收获。 一、源码的获取 我们在git仓库中搜索可…

AI语音助理来了,我们还需要手机吗?

你是如何召唤苹果手机的语音助手Siri的&#xff1f; 已经12岁高龄的Siri&#xff0c;它主要提供了三个类型的“辅助功能”。 1、调动声音、闹钟、备忘录等系统基础应用的控制能力。比如&#xff1a;Hi Siri,明早两点我有个2亿美金的合同要签&#xff0c;记得提醒我。 2、调用第…

AT89C51单片机实现单片机串口互动(中断方式,单片机--单片机,应答)

说一下功能&#xff1a;客户机发送0x01到服务机 2服务单片机应答0xf2到客户机 3客户机接收到0xf2,发送信息153432这6个数字到服务机 4client发送完信息后发送0xaa结束通信 5server接收到0xaa后回复0xaa结束通信&#xff0c;从此老死不相往来 看代码&#xff1a; //发送端…

Arraylist集合

保存数据会经常使用到数组&#xff0c;但数组存在以下几个缺陷: 长度固定&#xff1b;保存的必须为同一类型的元素&#xff0c;&#xff08;基本数据类型&#xff0c;或引用数据类型&#xff09;&#xff1b;使用数组进行增加元素的步骤比较麻烦&#xff1b; 这个时候就需要用一…