“for (... in ...)”语句中的循环元素顺序
“for (... in . ..)” JavaScript 中的循环用于迭代对象的属性。问题是这些属性是否按照它们声明的顺序进行处理。
根据 John Resig 的说法,所有主流浏览器在循环迭代期间都会维护对象属性的定义顺序。但是,Chrome 和 Opera 仅对非数字属性名称表现出例外。这些属性在两个浏览器中都会先于第一个数字属性进行处理。
为了简化:
对于例如:
var obj = { "first": "first", "2": "2", "34": "34", "1": "1", "second": "second" }; for (var i in obj) { console.log(i); };
在大多数浏览器中,输出将为:
1 2 34 first second
在 Chrome 和 Opera 中,输出将为:
1 2 34 first second
尽管当前浏览器行为的一致性,ECMAScript 规范未定义循环机制。因此,不建议依赖当前顺序。
最佳实践:
如果顺序对您的应用程序至关重要,建议使用数组而不是对象使用“for (... in ...)”循环。数组更可靠地保留元素的顺序。
以上是JavaScript 的 `for...in` 循环是否保证属性顺序?的详细内容。更多信息请关注PHP中文网其他相关文章!