数组元素的引用如何在Javascript中工作?

时间:2019-03-04 15:55:21

标签: javascript arrays data-structures

在C / C ++等低级语言中,数组是“包含相同类型值的内存位置的连续序列”,因为它们包含相同数据类型的值,所以可以使用索引(基地址+索引*)直接访问元素(数据类型的大小)。但是在JavaScript中,数组可以包含不同的数据类型值,因此无法使用索引和基地址进行地址计算。您能否解释一下在JavaScript中访问数组元素的背景。

1 个答案:

答案 0 :(得分:0)

与C / C ++不同,JavaScript是一种解释型语言。这意味着语言本身不对使用的内存结构做任何假设。从理论上讲,如果您需要一支纸和一支笔并用手“执行”代码,那么您可以成为JavaScript解释器。因此,您的问题无法得到明确的回答:引擎可以按照任何方式表示值,只要该值按照规范运行即可。

规范仅说明:

1)Javascript中的值可以有多种类型,对象是某种值类型。

2)对象是一组键值对,而键是字符串,值是任何值

3)数组是非常特殊的对象,它们也允许数字作为键(并将其底限为最接近的整数),并具有特殊的length属性。


现在,如果我要用C语言编写一个JS解释器,我首先将尝试以某种方式将“ JavascriptValue”表示为某种联合类型:

union JavaScriptValue {
  Number;
  String;
  Boolean;
  Undefined;
  Object;
}

现在一个对象可以表示为

 unordered_map<JavaScriptValue, JavaScriptValue>