[英]How the referencing of array elements work in Javascript?
在像 C/C++ 这样的低级语言中,数组是“包含相同类型值的连续内存位置序列”,因为它们包含相同数据类型的值,可以使用索引(基地址 + 索引*(大小为数据类型))。 但在 JavaScript 中,数组可以包含不同的数据类型值,因此无法使用索引和基地址进行地址计算。 你能解释一下在 JavaScript 中访问数组元素的背景吗?
与 C/C++ 不同,JavaScript 是一种解释型语言。 这意味着语言本身不会对所使用的内存结构做出任何假设。 从理论上讲,如果您拿起纸和笔并手动“执行”代码,您就可以成为 JavaScript 解释器。 因此,您的问题无法明确回答:引擎可以以任何方式表示值,只要其行为符合规范。
规范只说:
1) Javascript 中的值可以有多种类型,对象是某种值类型。
2)对象是一组键值对,而键是字符串,值是任何值
3) 数组是非常特殊的对象,它也允许数字作为键(并将它们下层为最接近的整数),并获得特殊的length
属性。
现在,如果我要用 C 编写一个 JS 解释器,我首先会尝试以某种方式将“JavascriptValue”表示为某种联合类型:
union JavaScriptValue {
Number;
String;
Boolean;
Undefined;
Object;
}
现在一个对象可以表示为
unordered_map<JavaScriptValue, JavaScriptValue>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.