迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

JavaScript for...in VS for...of 循环

作者:迹忆客 最近更新:2024/03/17 浏览次数:

本文比较了 JavaScript 中的 for..infor..of 循环。它识别了它们之间的区别并显示了我们可以在哪里使用它们。

for..in 循环对象的属性。它在每次迭代时返回一个键,该键可用于获取该特定键的值。for..of 在可迭代对象的值上创建循环,包括内置的 MapArraySetStringTypedArray

两者都有一个 variable 和一个 iterable。对于这两种情况,variable 可以是 constletvar。在 for..of 中,iterable 是一个对象,其可迭代属性被迭代,而 for..initerable 是一个对象本身。


在 JavaScript 中使用 for..in 循环

const person = {
  firstname: 'Delft',
  lastname: 'Stack',
  age: 30,
  email: 'Delft.Stack@gmail.com'
};

for (const prop in person) console.log(`${prop}: ${person[prop]}`)

输出:

"firstname: Delft"
"lastname: Stack"
"age: 30"
"email: Delft.Stack@gmail.com"

在上面给出的代码中,for..in 正在循环一个名为 person 的对象的属性。让我们通过迭代其属性来练习使用 for..in

请参阅下面的示例代码。

const person = {
  firstname: 'Delft',
  lastname: 'Stack',
  age: 30,
  email: 'Delft.Stack@gmail.com'
};

function email() {
  this.email = 'maofficial@gmail.com';
}

email.prototype = person;
var obj = new email();

for (const prop in obj) {
  if (obj.hasOwnProperty(prop)) {
    console.log(`obj.${prop} = ${obj[prop]}`);
  }
}

输出:

obj.email = maofficial@gmail.com

上面的代码使用 for..in 循环来检查对象是否使用 .hasOwnProperty() 来检查对象是否具有特定的属性。如果指定的属性确实是它自己的属性,则 .hasOwnProperty() 返回 true


在 JavaScript 中使用 for..of 循环

让我们开始用数组练习 for..of 循环。

const array = ['apple', 'banana', 'orange'];

for (const value of array) {
  console.log(value);
}

输出:

apple
banana
orange

在下面的代码中,iterable 是一个字符串。

const name = 'Delft';

for (const value of name) {
  console.log(value);
}

输出:

M
e
h
v
i
s
h

下面的代码实例展示了 for..ofMap 的用法。

const personMap =
    new Map([['firstname', 'Delft'], ['lastname', 'Stack'], ['age', 30]]);

for (const entry of personMap) {
  console.log(entry);
}

输出:

[ 'firstname', 'Delft' ]
[ 'lastname', 'Stack' ]
[ 'age', 30 ]

让我们使用显式实现 iterable 协议的对象来练习 for..of

const userDefinedfunctions = {
  [Symbol.iterator]() {
    return {
      num: 0,
      next() {
        if (this.num < 10) {
          return {value: this.num++, done: false};
        }
        return {value: undefined, done: true};
      }
    };
  }
};

for (const value of userDefinedfunctions) console.log(value);

输出:

0
1
2
3
4
5
6
7
8
9

Symbol.iterator 用作对象的默认迭代器。这个符号由 for-of 循环使用,其中我们有 iterable 的可迭代属性被迭代。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 JavaScript 中将 Base64 转换为图像

发布时间:2024/03/16 浏览次数:77 分类:JavaScript

将 Base64 字符串转换为图像的最简单方法是调用启动图像构造函数并将 base64 字符串作为图像源的函数。此解决方案需要最少的代码行和努力来获得更好的结果。此外,还有一些复杂的实

在 JavaScript 中操作图像

发布时间:2024/03/16 浏览次数:175 分类:JavaScript

本文将介绍 JavaScript 中的图像处理功能。我们将使用 CamanJS 这是一个 JavaScript 库来操作图像。

在 JavaScript 中交换图像

发布时间:2024/03/16 浏览次数:134 分类:JavaScript

本教程展示了如何使用 JavaScript 简单地交换图像。你将学习如何使用不同的方法交换图像,例如使用 onclick、鼠标单击和按钮单击。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便