繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM