JavaScript for...in VS for...of 循环
本文比较了 JavaScript 中的 for..in
和 for..of
循环。它识别了它们之间的区别并显示了我们可以在哪里使用它们。
for..in
循环对象的属性。它在每次迭代时返回一个键,该键可用于获取该特定键的值。for..of
在可迭代对象的值上创建循环,包括内置的 Map
、Array
、Set
、String
和 TypedArray
。
两者都有一个 variable
和一个 iterable
。对于这两种情况,variable
可以是 const
、let
或 var
。在 for..of
中,iterable
是一个对象,其可迭代属性被迭代,而 for..in
的 iterable
是一个对象本身。
在 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..of
与 Map
的用法。
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
的可迭代属性被迭代。
相关文章
JavaScript 中的整数除法
发布时间:2024/03/17 浏览次数:157 分类:JavaScript
-
我们可以使用 Math 库和 JavaScript 中的按位运算符来获得除法的商和余数。
JavaScript 中的 setInterval 循环
发布时间:2024/03/17 浏览次数:108 分类:JavaScript
-
本文将教我们在 JavaScript 中使用 setinterval 循环。
在 JavaScript 中跟踪鼠标位置
发布时间:2024/03/16 浏览次数:188 分类:JavaScript
-
在本教程中,我们将了解如何在 JavaScript 中使用鼠标事件跟踪鼠标位置。
在 JavaScript 中将 Base64 转换为图像
发布时间:2024/03/16 浏览次数:77 分类:JavaScript
-
将 Base64 字符串转换为图像的最简单方法是调用启动图像构造函数并将 base64 字符串作为图像源的函数。此解决方案需要最少的代码行和努力来获得更好的结果。此外,还有一些复杂的实
使用 JavaScript 将图像转换为 Base64 字符串
发布时间:2024/03/16 浏览次数:144 分类:JavaScript
-
本文将讨论如何通过创建画布并将图像加载到其中,并使用文件读取器方法获取图像的相应字符串,将图像转换为其 base64 字符串表示。
在 JavaScript 中操作图像
发布时间:2024/03/16 浏览次数:175 分类:JavaScript
-
本文将介绍 JavaScript 中的图像处理功能。我们将使用 CamanJS 这是一个 JavaScript 库来操作图像。
在 JavaScript 中交换图像
发布时间:2024/03/16 浏览次数:134 分类:JavaScript
-
本教程展示了如何使用 JavaScript 简单地交换图像。你将学习如何使用不同的方法交换图像,例如使用 onclick、鼠标单击和按钮单击。