Contents

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