深入了解 JavaScript 中的 for 循环 – 码农网

本文深入探讨了JavaScript中的for循环,特别是for-in循环,并揭示了Array的本质:它实际上是拥有String类型索引作为属性的对象。此外,文章还解释了为什么Array的length属性不会出现在for-in循环中,因为它是一个不可枚举的属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

深入了解 JavaScript 中的 for 循环 – 码农网 http://www.codeceo.com/article/javascript-for-loop.html

这篇文章加深了对for循环的理解,尤其是对for-in的介绍,很详细,很受教!
文章中一段对Array的介绍值得注意。JS中数组的“索引”值,0、1、2.。。。其实是数组对象的属性,而且这些索引值并不是Number类型,而是String类型。特殊的一点是这些属性只能通过arr[“0”]这种方式引用。事实上,arr[0]和arr[“0”]这两种方式写法的结果也是一样的。

Array 的真相

Array 在 Javascript 中是一个对象, Array 的索引是属性名。事实上, Javascript 中的 “array” 有些误导性, Javascript 中的 Array 并不像大部分其他语言的数组。首先, Javascript 中的 Array 在内存上并不连续,其次, Array 的索引并不是指偏移量。实际上, Array 的索引也不是 Number 类型,而是 String 类型的。我们可以正确使用如 arr[0] 的写法的原因是语言可以自动将 Number 类型的 0 转换成 String 类型的 “0″ 。所以,在 Javascript 中从来就没有 Array 的索引,而只有类似 “0″ 、 “1″ 等等的属性。有趣的是,每个 Array 对象都有一个 length 的属性,导致其表现地更像其他语言的数组。但为什么在遍历 Array 对象的时候没有输出 length 这一条属性呢?那是因为 for-in 只能遍历“可枚举的属性”, length 属于不可枚举属性,实际上, Array 对象还有许多其他不可枚举的属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值