JavaScript >> Javascript 文檔 >  >> JavaScript

for...of vs for...in JavaScript 中的循環

在 JavaScript 中有多種方法可以遍歷對象、數組和 DOM 元素。傳統上,基本的 for 循環用於執行迭代。但是,最近,其他迭代方法變得更流行了。

在本文中,我將描述 for...of 之間的區別 和 for...in 循環;現代 JavaScript 中最常用的兩種迭代方法。這兩個語句都用於循環目的。它們之間的主要區別在於它們迭代的內容。

for...in 循環

for...in 語句遍歷對象的所有可枚舉屬性,包括不按特定順序繼承的可枚舉屬性:

const book = {
    title: 'JavaScript for Beginners',
    price: '$9.99',
    year: 2018,
    pubisher: 'Amazon, Inc.'
};

// iterate over the object
for (const key in book) {
    console.log(`${key} --> ${book[key]}`);
}

// title --> JavaScript for Beginners
// price --> $9.99
// year --> 2018
// pubisher --> Amazon, Inc.

要跳過對象繼承的屬性,只需使用 hasOwnProperty() 方法:

for (const key in book) {
    if (book.hasOwnProperty(key)) {
        console.log(`${key} --> ${book[key]}`);
    }
}

for...of 循環

for...of 語句循環遍歷可迭代對象的值,如數組、字符串、映射、集合、NodeList 等。它不適用於對象,因為它們不可迭代。

這是一個例子:

const names = ['Alex', 'Emma', 'Atta', 'John'];

// iterate over names
for (const name of names) {
    console.log(`Hey ${name}!`);
}

// Hey Alex!
// Hey Emma!
// Hey Atta!
// Hey John!

經驗法則: 始終使用 for...in 循環遍歷對象。對於 JavaScript 中的各種可迭代對象,for...of 是要走的路!


Tutorial JavaScript 教程
  1. Redux 的基本原理

  2. (function(){....})() 你知道這是什麼嗎

  3. 通過 CDN 加載 Vue

  4. noteOn 不是函數

  5. 檢查您的 Javascript 包大小

  6. 沒有 Firebase 的 React Native 中的 Google 身份驗證/登錄。

  7. Codeacademy 上的代碼技能

  1. 在賽普拉斯的測試之間保持動態變量

  2. React 如何允許創建自定義組件?

  3. 使用 CSS 或 Javascript 複製/剪切時從文本中刪除樣式

  4. 如何在 JavaScript 中復制對象:完整指南

  5. 隨機 RGB

  6. TypeScript 4 中有什麼?

  7. Must/Should/Can - 個人組織系統

  1. 當選中一定數量的複選框時,如何正確使用 Jquery 禁用 Django 表單中的複選框

  2. 德諾?你是說節點嗎?

  3. 7 個非常酷的 jQuery 移動插件

  4. 使用 FaunaDB 構建無服務器 JAMStack 應用程序:第 2 部分