数组是 JavaScript 中的一个重要组成部分, 那么在 JavaScript 中数组的下标从几开始? 下面本篇文章就来给大家介绍一下, 希望对大家有所帮助.
JavaScript 数组下标是从 0 开始的.
那么为什么数组的下标是从 0 开始, 而不是从 1 开始呢? 从 1 开始不是更符合人们的习惯么.
数组 (Arrary) 是一种线性表数据结构. 它用一组连续的内存空间, 来存储一组具有相同类型的数据.
从数组存储的内存模型上来看,"下标" 最确切的定义应该是 "偏移 (offset)". 如果用 a 来表示数组的首地址, a[0] 就是偏移为 0 的位置, 也就是首地址, a[k]就表示偏移 k 个 type_size 的位置, 所以计算 a[k]的内存地址只需要用公式:
a[k]_address = base_address + k * type_size;
但, 如果数组从 1 开始计数, 那公式的 k 就要做相应的改变了:
a[k]_address = base_address + (k - 1 ) * type_size;
对比两个公式, 我们发现, 如果从 1 开始编号, 每次随机访问数组元素都多了一次减法运算, 对于 CPU 来说, 就是多了一次减法指令.
数组作为非常基础的数据结构, 通过下标访问数组元素又是其非常基础的编程操作, 效率的优化就要尽可能的做到极致. 从 0 开始, 可以减少一次减法操作, 提升了 CPU 的效率.
来源: http://www.css88.com/qa/javascript/11499.html