JavaScript中的for循环

(for循环):

for循环- 语法:

for(①初始化表达式;②条件表达式;④更新表达式){

③语句...

}

- 执行流程:

① for执行时,会首先执行初始化表达式,来初始化变量

② 执行条件表达式判断循环是否执行

- 判断结果为false,则语句结束

③ 如果判断结果为true,则执行循环体

④ 执行更新表达式对值进行更新

⑤ 重复②

- 在for循环中,初始化表达式只会执行一次

- for循环的功能和while循环是一样的,

- 但是for循环的结构更加的清晰,所以一般开发中使用for循环的几率会比较高一些

//for循环的使用for(var i=0; i<5; i++){console.log(i);}// for循环中的三个表达式都可以省略不写,也可以写在for循环的其他位置// var i=0// for(; i<5; ){// console.log(i);// i++// }// 如果省略for循环中的所有表达式,则for循环将会变成死循环.(慎用!!)// for(;;){// alert('hello');// }

1.2(for循环练习 ):

// 练习一:求100以内所有的奇数之和// 获取100以内所有的数// 创建一个变量,用来记录计算结果var result = 0;for(var i=1; i<=100; i++){// console.log(i);//判断i是否是奇数if(i % 2 != 0){//进入判断证明i是奇数//console.log(i);// result = result + i;//将所有奇数在result中进行累加result += i;}}console.log('100以内所有的奇数之和是:'+result);// 1方式二:创建变量进行累加var result = 0;// 获取1-100以内所有的奇数for(var i=1; i<100; i+=2){result += i;}//输出结果console.log('100以内所有的奇数之和是:'+result);// 练习二:求100以内所有7的倍数之和,以及个数//创建一个变量用来存储和var sum = 0;//创建一个变量用来存储个数var count = 0;//先获取100以内所有的7的倍数for(var i=7; i<100; i+=7){// console.log(i);// 计算和sum += i;//计算数量count++;}// 2方式二://获取1-100以内所有的数for(var i=1; i<100; i++){//判断i是否是7的倍数if(i % 7 == 0){sum += i;count++; } }console.log(`100以内7的倍数之和是:${sum},总个数是:${count}`);

练习四:

水仙花数是指一个 n 位数(n≥3 ),

它的每个位上的数字的 n 次幂之和等于它本身

(例如:1**3 + 5**3 + 3**3 = 153)。

求1000以内的所有的水仙花数。

for(var i=100; i<1000; i++){//获取i的百位数// 这里我只需要计算结果的整数位,所以可以使用parseInt来进行取整// 虽然parseInt()可以用来对数字进行取整,但是它的性能极低,开发时不要这么用var bai = parseInt(i / 100);//获取i的十位数var shi = parseInt((i - (bai * 100)) / 10);//获取i的个位数var ge = i % 10;//判断i是否是水仙花数//i的百位数 十位数 个位数三个数的立方和如果等于i,那么i就是水仙花数if(bai ** 3 + shi ** 3 + ge ** 3 === i){console.log(i, '是水仙花数');}}

练习五:获取用户输入的任意数,判断其是否是质数。

// 一个数只能被1和它自身整除,那么这个数就是质数。1不是质数也不是合数//获取用户输入的数字var num = +prompt('请输入一个大于1的整数:');//默认用户输入的内容正确// 检查num是否是质数// 举例子,检查13是是否质数?// 只需看13,有没有1和13以外的因数// 如果13有1和13以外的因数,则13不是质数// 如果13只有和13两个因数,则13是质数// 获取到所有的可能成为13因数的数(可能把13整除的数)//创建一个变量,用来记录num是否是质数// 默认认为num是质数var flag = true;//检查num是否是质数,需要先获取到所有的可能整除num的数(num的因数)for(var i=2; i<num; i++){// 检查num能否被i整除// if(num % i != 0){// // 如果进入判断,能否说明num是质数? 只会判断一次不能说明// alert(num+'是质数!');// }if(num % i == 0){// 进入判断,说明num能被i整除// 如果num能被i整除,则说明num一定不是质数// num不是质数,将flag设置为falseflag = false;}}//检查num是否是质数,并输出结果if(flag){// flag为true,num是质数alert(num+'是质数!');}else{// flag为false,num不是质数alert(num+'不是质数!');}

1.3 嵌套的for循环:

//创建一个循环,来控制打印的行数(高度)

// 当循环发生嵌套时,外层循环每执行一次,内层循环就会执行一圈

// for(var i=0; i<5; i++){// // 创建一个内部循环,来控制图形的宽度// for(var j=0; j<5; j++){// document.write('* ');// }// document.write('<br>');// }

打印图形:

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* 第一行 j<i+1 i=0

* * 第二行 j<2 i=1

* * * 第三行 j<3 i=2

* * * * 第四行 j<4 i=3

* * * * * 第五行 j<5 i=4

// //外层循环控制高度// for(var i=0; i<5; i++){// // 创建一个内部循环,来控制图形的宽度// for(var j=0; j<i+1; j++){// document.write('❤ ');// }// document.write('<br>');// }

打印如下图形

* * * * * j<5 i=0

* * * * j<4 i=1

* * * j<3 i=2

* * j<2 i=3

* j<1 i=4

//外层循环控制高度

for(var i=0; i<5; i++){

// 创建一个内部循环,来控制图形的宽度

for(var j=0; j<5-i; j++){

document.write('❤ ');

}

document.write('<br>');

}

//2从上往下增加

for(let i=1; i<=5; i++){

// 创建一个内部循环,来控制图形的宽度

for(let j=1; j<=i; j++){

console.log('❤');

}

console.log('<br>');

}

1.4嵌套for循环练习(99乘法表和100内的质数):

练习1:打印99乘法表

1x1=1

1x2=2 2x2=4

1x3=3 2x3=6 3x3=9

1x4=4 2x4=8 3x4=12 4x4=16

//创建一个外部循环,用来表示图形的高度for(let i=1; i<=9; i++){// 创建一个内部循环,用来表示图形的宽度let str =""for(var j=1; j<=i; j++){//打印公式str += (j+' x '+i+' = '+(i*j)+" ");}console.log(str);}

练习二:求100以内所有的质数:

//先求出100以内所有的数for(var i=2; i<100; i++){//检查i是否是质数//创建一个变量记录i的状态,默认i是质数(true)var flag = true;//获取可能整除i的数for(var j=2; j<i; j++){//判断i能否被j整除if(i % j === 0){// i 能被 j整除,说明i一定不是质数,修改flag的值flag = false;}}//如果i是质数,则打印iif(flag){console.log(i);}}

1.5 break和Continue结束语句

break --用来立即结束循环或switch语句

break 默认只对离它最近的循环起作用

for(var i=0; i<5; i++){console.log('outer-->'+i);for(var j=0; j<5; j++){console.log('\tinner-->'+j);if(j===2){break;}}}

Continue--

- 用来跳过当次循环

- 默认会影响到离它最近的循环

for(var i=0; i<5; i++){

console.log('outer --> '+i);

for(var j=0; j<5; j++){

if(j === 2){

continue;

}

console.log('\tinner --> '+j);

}

}

1.6 计时器-和break-的优化作用:

时间的记录:

100000 59098ms

10000 849ms

第一次优化 break

100000 5352ms

10000 74ms

第二次优化 i**0.5开方

1000000 800ms

100000 34ms

10000 9ms

问题:如果求1000000以内的质数会花费多长时间?

如果时间太长可否再次对其进行优化?

// console.time() 用来开启一个计时器,它需要一个字符串作为参数,字符串表示计时器的名字console.time('test');for(var i=2; i<1000000; i++){var flag = true;/*361 362 183 124 96 6*/for(var j=2; j<=i**0.5; j++){if(i % j === 0){flag = false;//进入判断,说明i一定不是质数,此时内层循环不需要再执行,可以直接退出break;}}//注释掉打印输出,会更快if(flag){console.log(i);}}//console.timeEnd()用来结束一个计时器console.timeEnd('test');

1.7 for循环嵌套和while循环嵌套的区别:

1.使用场景不同: 知道执行次数的时候一般用for,条件循环时一般用while。
2.两种循环在构造死循环时的区别: while循环里的条件被看成表达式,因此,当用while构造死循环时,里面的TRUE实际上被看成永远为真的表达式,这种情况容易产生混淆3.两种循环在普通循环时的区别: 对一个数组进行循环时,一般来说,如果每轮循环都是在循环处理完后才讲循环变量增加的话,使用for循环

欢迎关注我的原创文章:小伙伴们!我是一名热衷于前端开发的作者,致力于分享我的知识和经验,帮助其他学习前端的小伙伴们。在我的文章中,你将会找到大量关于前端开发的精彩内容。

学习前端技术是现代互联网时代中非常重要的一项技能。无论你是想成为一名专业的前端工程师,还是仅仅对前端开发感兴趣,我的文章将能为你提供宝贵的指导和知识。

在我的文章中,你将会学到如何使用HTML、CSS和JavaScript创建精美的网页。我将深入讲解每个语言的基础知识,并提供一些实用技巧和最佳实践。无论你是初学者还是有一定经验的开发者,我的文章都能够满足你的学习需求。

此外,我还会分享一些关于前端开发的最新动态和行业趋势。互联网技术在不断发展,新的框架和工具层出不穷。通过我的文章,你将会了解到最新的前端技术趋势,并了解如何应对这些变化。

我深知学习前端不易,因此我将尽力以简洁明了的方式解释复杂的概念,并提供一些易于理解的实例和案例。我希望我的文章能够帮助你更快地理解前端开发,并提升你的技能。

如果你想了解更多关于前端开发的内容,不妨关注我的原创文章。我会不定期更新,为你带来最新的前端技术和知识。感谢你的关注和支持,我们一起探讨交流技术共同进步,期待与你一同探索前端开发的奇妙世界!

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

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

相关文章

加密的艺术:对称加密的奇妙之处(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

一些关于fMRI脑数据的预处理工具

一些关于fMRI脑数据的预处理工具 前言概述SPM12工具箱FSL工具箱FreeSurfer工具箱BrainNet Viewer工具箱circularGraph工具箱Nipype集成框架fMRIPrep集成框架参考文献 前言 March 25, 2022 这里是关于fMRI脑数据的预处理工具的相关调研 主要是关于数据的预处理&#xff0c;数据…

Windows环境提示“‘mysql‘ 不是内部或外部命令,也不是可运行的程序或批处文理件” 简易记录

在Windows环境下使用DOS命令窗登入MYSQL&#xff0c;提示“mysql 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。” 这意味着系统无法找到 mysql.exe可执行文件&#xff0c;这是因为 MySQL 没有正确安装或未添加到系统PATH环境变量中所致。 处理方法&#x…

spring-boot-data-jpa、JPA实现负责查询、复杂搜索

spring-boot-data-jpa、JPA实现负责查询、复杂搜索 JPA越来越丰富了&#xff0c;下面使用springboot3.x实现JPA分页 通过传入Example参数实现复杂字段查询 转自 https://lingkang.top/archives/jpa-shi-xian-fu-ze-cha-xun 依赖 <dependency><groupId>org.spring…

分组背包问题笔记

分组背包是选不同的组&#xff0c;每个组中只能选一个物品。分组背包就是01背包的变种&#xff0c;多重背包就是特殊的分组背包。 //分组背包 #include<iostream> using namespace std; const int N 110; int f[N], v[N], w[N], n, m;int main() {ios::sync_with_stdio(…

ShardingSphereJDBC简单入门

ShardingSphere 介绍ShardingSphere-JDBCSharding-Sphere-ProxyShardingSphere-Sidecar混合架构运行模式DistSQL可拔插架构ShardingSphere的发展路线 主从复制ShardingSphere-JDBC功能SQL解析SQL支持程度SQL稳定支持SQL实验性支持 MySQL不支持SQL清单分页 数据分片垂直分片水平…

飞天使-docker知识点9-dockerfile补充

文章目录 dockerfile.dockerignoreMAINTANIERFROMEXPOSEENVCMD dockerfile 里面的文件首字母必须大写 编译的文件必须放在当前目录&#xff0c;不能放在父目录文件配置好了之后&#xff0c;可以使用docker build 命令进行操作.dockerignore 在使用 Dockerfile 进行构建时&…

509.斐波那契数

题目描述 斐波那契数&#xff0c;通常用 F(n) 表示&#xff0c;形成的序列称为斐波那契数列。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 n > 1。…

Python 爬虫开发完整环境部署,爬虫核心框架安装

Python 爬虫开发完整环境部署 前言&#xff1a; ​ 关于本篇笔记&#xff0c;参考书籍为 《Python 爬虫开发实战3 》 笔记做出来的一方原因是为了自己对 Python 爬虫加深认知&#xff0c;一方面也想为大家解决在爬虫技术区的一些问题&#xff0c;本篇文章所使用的环境为&#x…

关于Ubuntu22.04恢复误删文件的记录

挂载在Ubuntu22.04下的固态盘有文件被误删了&#xff0c;该固态盘是ntfs格式的。 在网上找了很多教程&#xff0c;最后决定用TestDisk工具进行恢复。 现记录如下&#xff1a; Ubuntu安装testdisk sudo apt-get install testdisk运行testdisk sudo testdisk得到 我选择的是…

Linux文件与目录管理

在Linux系统中&#xff0c;文件和目录是最基本的组织单位。了解如何有效地管理和操作文件和目录对于提高工作效率至关重要。本文将介绍Linux文件与目录管理的基本原理和常用命令&#xff0c;帮助读者掌握Linux系统的文件操作技巧。 一、文件与目录的基本概念 文件&#xff1a…

vue打包后el-image图片不出来

结论&#xff1a; publicPath:"/"解决&#xff0c;不能设置相对路径。 环境 可能相关的环境&#xff1a; vue-cli5.0vue3vue-router4 可能的原因 publicPath:“./”路由history路由base 现象 图片异常 img部分图片被转换成了base64可以出来style里url("~…

英伟达 Jetson Xavier/Xavier NX/Orin系统移植编译

英伟达 Jetson Xavier/Xavier NX/Orin系统移植编译 1、下载Jetson BSP包和交叉编译环境 地址&#xff1a;https://developer.nvidia.com/embedded/jetson-linux-archive下载需要版本即可&#xff0c;此次编译采用32.4.2版本 需要下载的文件如下&#xff1a; 2、新建一个文件…

React 列表和键

React 列表和键 大家好&#xff0c;在这一课中&#xff0c;我们将学习如何在 React 中创建和渲染列表。我们还将学习如何使用键来优化列表的性能。 创建列表 我们可以使用 JavaScript 的 map() 方法来创建列表。 const numbers [1, 2, 3, 4, 5]; const listItems numbers…

算法:对称二叉树

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、问题描述 二、递归算法 三、字符串判断法 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、问题描述 有一棵二叉树&#xff0…

LeetCode(66)二叉树的最大深度【二叉树】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 二叉树的最大深度 1.题目 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7]…

js获取对象数组中重复项的个数并排序,js数组对象筛选出重复数据 并计算 重复了几次

js数组对象筛选出重复数据 并计算 重复了几次 例如&#xff1a; 把以下数据 let arr [{kuaidizhandian:顺丰快递},{kuaidizhandian:邮政快递},{kuaidizhandian:顺丰快递} ]转换为 kuaidarr [{kuaidizhandian:顺丰快递,num&#xff1a;2},{kuaidizhandian:邮政快递,num&…

显示所有已连接的网络连接信息

ECHO OFF & setlocal enabledelayedexpansion TITLE 显示所有已连接的网络连接信息 mode con: cols80 lines30 CALL :get_NIC_info pause>nul EXIT /B 0:get_NIC_info SET "_i_0"ECHO 所有已连接的网络连接信息&#xff08;未插网线不会显示在下方&#xff09…

Python类调用实例方法

在 Python 的类体中定义的方法默认都是实例方法&#xff0c;通过对象来调用实例方法。 但要提醒大家的是&#xff0c;Python 的类在很大程度上是一个命名空间&#xff0c;当程序在类体中定义变量、方法时&#xff0c;与前面介绍的定义变量、定义函数其实并没有太大的不同。对比…

解析神器Xpath详解+实战

解析神器Xpath详解实战 有同学说&#xff0c;我正则用的不好&#xff0c;处理HTML文档很累&#xff0c;有没有其他的方法&#xff1f; 有&#xff01;那就是XPath&#xff0c;我们可以先将 HTML文件 转换成 XML文档&#xff0c;然后用 XPath 查找 HTML 节点或元素。 目标&am…