JavaScript 中的 For-In 循环和对象属性顺序
使用“for...in”循环迭代对象的属性时,很自然地想知道遍历的顺序是否与原始声明的顺序相符。
根据 John 的说法Resig,过去主流浏览器中 JavaScript 的实现都是按照属性定义的顺序执行这个循环的。但是,Chrome 有一个例外,非数字属性名称会按顺序拉到第一个数字属性之前。
如今,这种行为因浏览器而异。现代浏览器都遵循定义顺序,但 Chrome 和 Opera 除外,它们继续打乱非数字属性。这适用于“for...in”循环和“Object.keys”方法。
一个示例说明了这一点:
var obj = { "first": "first", "2": "2", "34": "34", "1": "1", "second": "second" }; for (var i in obj) { console.log(i); }
Chrome 和 Opera 中的输出:
"1" "2" "34" "first" "second"
其他浏览器中的输出:
"first" "second" "1" "2" "34"
尽管存在这种差异,但还是有必要的请注意,浏览器实现可能会发生变化,并且依赖于顺序的保留可能存在风险。
因此,如果属性的顺序在您的应用程序中至关重要,则应谨慎使用数组,因为它们提供了可预测且稳定的顺序订购机制。
以上是JavaScript 的 `for...in` 循环属性顺序在浏览器中是否一致?的详细内容。更多信息请关注PHP中文网其他相关文章!