为...在
for...in 语句以任意顺序迭代对象的非乘性属性,包括继承的可枚举属性。
for (variable in object) statement
多变的
在每次迭代中,变量将使用不同的属性名称进行参数化。
目的
迭代其非 Symbol 类型的可枚举属性的对象。
注意:for...in 不应该用于迭代索引顺序。
如果只想考虑对象本身的属性,而不是它的原型,可以使用或perform来判断一个属性是否是对象本身的属性(也可以使用)。 或者,如果您知道不会有任何外部代码干扰,您可以使用检测来增强外部原型。
for...in 是为了遍历对象属性而建立的。 不建议与链表一起使用。 链表可以使用 Array.prototype.forEach() 和 for...of。 那么 for...in 的用途是什么? ?
它最常用的地方应该是用于调试,可以更方便地检测对象属性(通过输出到控制台或其他形式)。 虽然链表对于处理存储的数据比较实用,但是当你在处理键值数据(比如用作“键”的属性)并且需要检测其中的任意一个键是否是某个值时javascript 事件 顺序,仍然建议使用为..in.
下面的函数接受一个对象作为参数。 调用时迭代传递对象的所有可枚举属性后,返回所有属性名称及其对应值的字符串。
js
var obj = { a: 1, b: 2, c: 3 };
for (var prop in obj) {
console.log("obj." + prop + " = " + obj[prop]);
}
// Output:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
以下函数说明了其用法: 不显示继承的属性。
js
var triangle = { a: 1, b: 2, c: 3 };
function ColoredTriangle() {
this.color = "red";
}
ColoredTriangle.prototype = triangle;
var obj = new ColoredTriangle();
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
console.log(`obj.${prop} = ${obj[prop]}`);
}
}
// Output:
// "obj.color = red"
规格
BCD 表仅在浏览器中加载
在 SpiderMonkey 40 之前,可以在 for...in 循环中使用初始化表达式 (i=0):
js
var obj = {a: 1, b: 2, c: 3};
for (var i = 0 in obj) {
console.log(obj[i]);
}
// 1
// 2
// 3
这种非标准行为现在在版本 40 及更高版本中被忽略javascript 事件 顺序,并且在严格模式下会出现 ("") 错误(Firefoxbug748550 和 Firefoxbug1164741)。
与其他引擎一样,V8 (Chrome)、Chakra (IE/Edge)、JSC (WebKit/Safari) 正在努力消除这些非标准行为。
发现此页面有内容问题?想要更多参与吗?了解如何做出贡献。
此页面的最后修改时间为 2023 年 8 月 30 日。