返回

for...in 与 for...of 循环的区别

前端

for...in与 for...of有什么区别

    在 JavaScript 中,`for...in` 和 `for...of` 循环语句用于遍历数组、对象和其他可迭代对象。虽然这两种循环语句都用于遍历,但它们在语法、语义和应用场景上存在一些区别:
    
    1. **语法:** 
    
        - `for...in` 循环:`for (key in object)`
        - `for...of` 循环:`for (element of iterable)`
    
    2. **可迭代对象:** 
    
        - `for...in` 循环:可以遍历对象的可枚举属性(键)
        - `for...of` 循环:可以遍历数组、字符串和其他具有可迭代性质的对象
    
    3. **返回值:** 
    
        - `for...in` 循环:返回对象的键(属性名)
        - `for...of` 循环:返回对象的值(属性值)
    
    4. **示例:** 
    
    ```js
    // 遍历对象
    const person = { name: 'John', age: 30, city: 'New York' };
    
    for (const key in person) {
        console.log(key); // Output: name, age, city
    }
    
    // 遍历数组
    const numbers = [1, 2, 3, 4, 5];
    
    for (const number of numbers) {
        console.log(number); // Output: 1, 2, 3, 4, 5
    }
    ```
    
    ## **应用场景:** 
    
    - `for...in` 循环通常用于遍历对象的可枚举属性,并访问对象的值。例如,可以使用 `for...in` 循环来获取对象的键名或属性名。
    - `for...of` 循环通常用于遍历数组、字符串和其他具有可迭代性质的对象,并访问对象中的元素或值。例如,可以使用 `for...of` 循环来获取数组中的元素或字符串中的字符。
    
    ## **总结:** 
    
    总之,`for...in` 和 `for...of` 都是 JavaScript 中常用的循环语句,但它们具有不同的语法、语义和应用场景。`for...in` 循环用于遍历对象的属性,而 `for...of` 循环用于遍历数组和其他可迭代对象。了解这两种循环语句的区别可以帮助您在不同的情况下选择合适的循环语句,从而编写出更加高效和易读的 JavaScript 代码。