Js中几种循环的使用
在JavaScript中有五种常用的循环,现在来分别介绍一下五种循环的用法。
1.while
当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。while语句的一般表达式为:while(表达式){循环体}。
let num = 0;
while (num < 5) {
num++;
console.log(num);
}
// 1
// 2
// 3
// 4
// 5
while (num > 5) {
num++;
console.log(num);
}
// 5
// 4
// 3
// 2
// 1
2.do...while
do {循环体} while(表达式)
用法和while相差不大,但有特殊的一点是当while后条件表达式为false时,do内的循环体仍然会执行一次
let num = 0;
do {
num++;
console.log(num);
} while (num < 5)
// 1
// 2
// 3
// 4
// 5
do {
num++;
console.log(num);
} while (num > 5)
// 1
3.for
for循环是平时用法最多的循环,for循环的循环语句由循环体及循环的判定条件两部分组成,其表达式为:for(单次表达式;条件表达式;末尾循环体){中间循环体;}。因为for循环的单次表达式,条件表达式,末尾循环体可以使用不同的形式,所以for循环很灵活,有多种变式。
shilet num = 0;
// 最基本的用法
for (let i = 5; i > num; i--) {
console.log(i);
}
// 当单次表达式写在判断条件外部时
let i=5;
for(;i>num;i--){
console.log(i)
}
// 当单次表达式和条件表达式写在判断条件外部时
for(;;i--){
if(i>0){
console.log(i);
}else{
break
}
}
for(;true;){
if(i>0){
console.log(i);
}else{
break
}
i--;
}
// 当作while循环使用
// 死循环 一直打印 for
for(;true;){
onsole.log('for');
}
for...of...
for...of...通常用来遍历传入对象的属性值,前提传入的对象是一个可迭代对象,不可迭代对象需要转为可迭代对象再遍历.
let arr = [1, 'a', '2', 3, 'b'];
let obj = {
name: 'aa',
age: 11
}
for (const value of arr) {
console.log(value);
}
// 1
// a
// '2'
// 3
// b
for (const value of obj) {
console.log(value);
}
// TypeError: obj is not iterable 提示obj不是可迭代对象
使用for...of...可以消耗迭代器
// o为生成斐波那契数列的一个迭代器对象
let o = {
n1: 1,
n2: 1,
[Symbol.iterator]() {
return this
},
next() {
let current = this.n2;
this.n2 = this.n1;
this.n1 = this.n1 + current;
if(current>10) return {value: current,done: true}
return {value: current,done: false}
}
}
for (const v of o) {
console.log(v);
}
// 1
// 1
// 2
// 3
// 5
// 8
for...in...
for...in...通常来遍历传入对象的属性名,该循环没有对对象是否可迭代的要求
let arr = [1, 'a', '2', 3, 'b'];
let obj = {
name: 'aa',
age: 11
}
for (const key in arr) {
console.log(key);
}
// 0
// 1
// 2
// 3
// 4
for (const key in obj) {
console.log(key);
}
// name
// age
Js中几种循环的使用的更多相关文章
- JS中几种常见的数组算法(前端面试必看)
JS中几种常见的数组算法 1.将稀疏数组变成不稀疏数组 /** * 稀疏数组 变为 不稀疏数组 * @params array arr 稀疏数组 * @return array 不稀疏的数组 */ f ...
- [转]js中几种实用的跨域方法原理详解
转自:js中几种实用的跨域方法原理详解 - 无双 - 博客园 // // 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同 ...
- 关于js中两种定时器的设置及清除(转载)
1.JS中的定时器有两种: window.setTimeout([function],[interval]) 设置一个定时器,并且设定了一个等待的时间[interval],当到达时间后,执行对应的方法 ...
- [js]js中4种无节操的预解释情况
js中4种无节操的预解释情况 - 1. if语句即使条件不成立,条件里的表达式也会进行预解释. - 2. 匿名函数的预解释: 只对等号左边与解释 - 3. 自执行函数的预解释: 不进行预就解释, 执行 ...
- [js]js中6种错误处理机制
js中6种错误 http://javascript.ruanyifeng.com/grammar/error.html#toc5 https://www.jianshu.com/p/467b9a145 ...
- js中三种定义变量 const, var, let 的区别
js中三种定义变量的方式const, var, let的区别 1.const定义的变量不可以修改,而且必须初始化. 1 const b = 2;//正确 2 // const b;//错误,必须初始化 ...
- js事件、Js中的for循环和事件的关系、this
一.js事件 1.事件 用户在网页中所触发的行为 鼠标滑动种类很多,键盘.表单特列: 点击:onclick 鼠标进入:onmouseenter 鼠标离开:onmouseleave 鼠标悬浮:onmo ...
- php中的for循环和js中的for循环
php中的for循环 循环100个0 for ($i=0;$i<=100;$i++){ $pnums.='0'.","; } js中的for循环,循环31个相同的数.循环日期 ...
- JS中5种经典继承方式
继承 JS中继承的概念: 通过[某种方式]让一个对象可以访问到另一个对象中的属性和方法,我们把这种方式称之为继承 并不是所谓的xxx extends yyy 为什么要使用继承? 有些对象会有方法(动作 ...
- 【nodejs原理&源码赏析(7)】【译】Node.js中的事件循环,定时器和process.nextTick
[摘要] 官网博文翻译,nodejs中的定时器 示例代码托管在:http://www.github.com/dashnowords/blogs 原文地址:https://nodejs.org/en/d ...
随机推荐
- Golang 常用库之jwt-go
本文地址 https://www.cnblogs.com/zichliang/p/17303759.html github地址:https://github.com/dgrijalva/jwt-go ...
- UESTC__ACM 1264 人民币的构造
链接地址:https://acm.uestc.edu.cn/contest/198/problem/J 我们都知道人民币的面值是1.2.5.10,为什么是这个数值呢,我们分析了下发现,从1~10的每个 ...
- java项目 学生成绩管理系统 (源码+数据库文件)
需要的私信我 备注来意:项目名称 来了就点个赞再走呗,即将毕业的兄弟有福了 文章底部获取源码 java项目 学生成绩管理 (源码+数据库文件)技术框架:java+springboot+vue+m ...
- boot-admin整合flowable官方editor-app进行BPMN2.0建模
正所谓百家争鸣.见仁见智.众说纷纭.各有千秋!在工作流bpmn2.0可视化建模工具实现的细分领域,网上扑面而来的是 bpmn.js 这个渲染工具包和web建模器,而笔者却认为使用flowable官方开 ...
- Node.js躬行记(27)——接口管理
在页面发生线上问题时,你要做的事情就是去查接口,响应数据是否正确,查接口的方法有两种: 第一种是在浏览器中打开地址,但是你必须得知道详细的 URL,并且有些页面还需要附带参数. 第二种是打开编辑器,启 ...
- 记一道国际赛CTF web题
这是一篇关于打d3ctf坐牢,无奈去打国际赛的题解. TAMUCTF [Blackbox] 首先打开页面,然后发现一个登陆框 刚开始最先想到就是弱口令登陆,尝试几个后发现登陆不进去. 之后我就换了一个 ...
- dos命令、变量、字符编码、注释、用户输入
一.dos命令 1.dos命令 c: 切换盘符 cd c:\pthon 切换路径 dir 查看目录下的文件 cd .. 返回到上一层目录 cd ../.. 返回到上一层的上一层目录 二.环境变量的配置 ...
- docker常用命令之帮助启动类命令和镜像命令
docker安装之后,启动时会报如下错误: Job for docker.service failed because start of the service was attempted too o ...
- 2023-02-23:请用go语言调用ffmpeg,解码mp4文件并保存为YUV420P格式文件。
2023-02-23:请用go语言调用ffmpeg,解码mp4文件并保存为YUV420P格式文件. 答案2023-02-23: 使用 github.com/moonfdd/ffmpeg-go 库. 解 ...
- 2022-07-09:总长度为n的数组中,所有长度为k的子序列里,有多少子序列的和为偶数?
2022-07-09:总长度为n的数组中,所有长度为k的子序列里,有多少子序列的和为偶数? 答案2022-07-09: 方法一:递归,要i还是不要i. 方法二:动态规划.需要两张dp表. 代码用rus ...