我听说它实际上并没有像其他语言那样“指向”内存中的值(或对象,因为一切都是JS中的对象)。相反,JS变量引用内存中的其他值/对象。这是真的?指向和引用之间的语义差异是什么?
答案 0 :(得分:2)
JavaScript变量名称用作保存变量值的对象的属性名称键,例如代码范围内的函数的environment record对象,或全局对象本身。因此,变量名称访问变量的值和数据类型的对象属性实现。
在这个模型下,是的,JavaScript值没有"指向"对于任何东西,它们都是包含变量值的对象的属性名称。
Javscript中的所有对象?不.Javascript包含原始数据类型,例如" number"," boolean"," null"可以用内存中有限数量的八位字节表示的,这是一种原始的数据类型" string"它可以使用可变数量的内存,以及复杂的数据类型" object"它也可以使用可变数量的内存。 究竟如何在对象属性中保存每个数据类型并为访问而调用是依赖于实现的,并且超出了本答案的范围。
根据注释中链接的问题,指针是使用内存地址的特定类型的引用。更一般地说"参考"涵盖用于访问另一个值的任何值,并且可以包括内存地址,表索引或用于访问某些内容的密钥。
表示完整性
对象数据类型实际上是一种引用数据类型,包含Javascript引擎用于访问为该对象保存的数据的某种某种。同一对象引用的每个等值副本访问相同的底层对象数据结构。
因此,作为参数传递给对象的对象的属性所做的更改在返回时仍然存在,并且在多个变量设置为相同对象值的情况下,每个变量都访问同一组对象属性。