我有一个关于 JavaScript 数组的一般性问题。 JavaScript 中的数组索引在内部是否作为字符串处理?
我在某处读到,因为数组在 JavaScript 中是对象,所以索引实际上是一个字符串。我对此有点困惑,很高兴得到任何解释。
最佳答案
形式上,所有属性名称都是字符串。这意味着类似数组的数字属性名称实际上与任何其他属性名称没有任何不同。
如果您检查第 6 步 in the relevant part of the spec ,您会看到在查找属性之前,属性访问器表达式总是被强制转换为字符串。无论对象是数组实例还是其他类型的对象,都会(正式地)遵循该过程。 (同样,它只需要看起来就像正在发生的那样。)
现在,在内部,JavaScript 运行时可以自由地以任何方式实现数组功能。
edit — 我曾想过使用 Number.toString
来演示数字到字符串的转换,但事实证明规范明确描述了该特定类型转换是通过内部进程进行的,而不是通过隐式转换然后调用 .toString()
(出于性能原因,这可能是一件好事)。
关于javascript - JavaScript 数组索引是字符串还是整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27537677/