在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中几种循环的使用的更多相关文章

  1. JS中几种常见的数组算法(前端面试必看)

    JS中几种常见的数组算法 1.将稀疏数组变成不稀疏数组 /** * 稀疏数组 变为 不稀疏数组 * @params array arr 稀疏数组 * @return array 不稀疏的数组 */ f ...

  2. [转]js中几种实用的跨域方法原理详解

    转自:js中几种实用的跨域方法原理详解 - 无双 - 博客园 // // 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同 ...

  3. 关于js中两种定时器的设置及清除(转载)

    1.JS中的定时器有两种: window.setTimeout([function],[interval]) 设置一个定时器,并且设定了一个等待的时间[interval],当到达时间后,执行对应的方法 ...

  4. [js]js中4种无节操的预解释情况

    js中4种无节操的预解释情况 - 1. if语句即使条件不成立,条件里的表达式也会进行预解释. - 2. 匿名函数的预解释: 只对等号左边与解释 - 3. 自执行函数的预解释: 不进行预就解释, 执行 ...

  5. [js]js中6种错误处理机制

    js中6种错误 http://javascript.ruanyifeng.com/grammar/error.html#toc5 https://www.jianshu.com/p/467b9a145 ...

  6. js中三种定义变量 const, var, let 的区别

    js中三种定义变量的方式const, var, let的区别 1.const定义的变量不可以修改,而且必须初始化. 1 const b = 2;//正确 2 // const b;//错误,必须初始化 ...

  7. js事件、Js中的for循环和事件的关系、this

    一.js事件  1.事件 用户在网页中所触发的行为 鼠标滑动种类很多,键盘.表单特列: 点击:onclick 鼠标进入:onmouseenter 鼠标离开:onmouseleave 鼠标悬浮:onmo ...

  8. php中的for循环和js中的for循环

    php中的for循环 循环100个0 for ($i=0;$i<=100;$i++){ $pnums.='0'.","; } js中的for循环,循环31个相同的数.循环日期 ...

  9. JS中5种经典继承方式

    继承 JS中继承的概念: 通过[某种方式]让一个对象可以访问到另一个对象中的属性和方法,我们把这种方式称之为继承 并不是所谓的xxx extends yyy 为什么要使用继承? 有些对象会有方法(动作 ...

  10. 【nodejs原理&源码赏析(7)】【译】Node.js中的事件循环,定时器和process.nextTick

    [摘要] 官网博文翻译,nodejs中的定时器 示例代码托管在:http://www.github.com/dashnowords/blogs 原文地址:https://nodejs.org/en/d ...

随机推荐

  1. Golang 常用库之jwt-go

    本文地址 https://www.cnblogs.com/zichliang/p/17303759.html github地址:https://github.com/dgrijalva/jwt-go ...

  2. UESTC__ACM 1264 人民币的构造

    链接地址:https://acm.uestc.edu.cn/contest/198/problem/J 我们都知道人民币的面值是1.2.5.10,为什么是这个数值呢,我们分析了下发现,从1~10的每个 ...

  3. java项目 学生成绩管理系统 (源码+数据库文件)

    ​ 需要的私信我 备注来意:项目名称 来了就点个赞再走呗,即将毕业的兄弟有福了 文章底部获取源码 java项目  学生成绩管理 (源码+数据库文件)技术框架:java+springboot+vue+m ...

  4. boot-admin整合flowable官方editor-app进行BPMN2.0建模

    正所谓百家争鸣.见仁见智.众说纷纭.各有千秋!在工作流bpmn2.0可视化建模工具实现的细分领域,网上扑面而来的是 bpmn.js 这个渲染工具包和web建模器,而笔者却认为使用flowable官方开 ...

  5. Node.js躬行记(27)——接口管理

    在页面发生线上问题时,你要做的事情就是去查接口,响应数据是否正确,查接口的方法有两种: 第一种是在浏览器中打开地址,但是你必须得知道详细的 URL,并且有些页面还需要附带参数. 第二种是打开编辑器,启 ...

  6. 记一道国际赛CTF web题

    这是一篇关于打d3ctf坐牢,无奈去打国际赛的题解. TAMUCTF [Blackbox] 首先打开页面,然后发现一个登陆框 刚开始最先想到就是弱口令登陆,尝试几个后发现登陆不进去. 之后我就换了一个 ...

  7. dos命令、变量、字符编码、注释、用户输入

    一.dos命令 1.dos命令 c: 切换盘符 cd c:\pthon 切换路径 dir 查看目录下的文件 cd .. 返回到上一层目录 cd ../.. 返回到上一层的上一层目录 二.环境变量的配置 ...

  8. docker常用命令之帮助启动类命令和镜像命令

    docker安装之后,启动时会报如下错误: Job for docker.service failed because start of the service was attempted too o ...

  9. 2023-02-23:请用go语言调用ffmpeg,解码mp4文件并保存为YUV420P格式文件。

    2023-02-23:请用go语言调用ffmpeg,解码mp4文件并保存为YUV420P格式文件. 答案2023-02-23: 使用 github.com/moonfdd/ffmpeg-go 库. 解 ...

  10. 2022-07-09:总长度为n的数组中,所有长度为k的子序列里,有多少子序列的和为偶数?

    2022-07-09:总长度为n的数组中,所有长度为k的子序列里,有多少子序列的和为偶数? 答案2022-07-09: 方法一:递归,要i还是不要i. 方法二:动态规划.需要两张dp表. 代码用rus ...