Javascript 在V8中,诸如null、undefined和boolean之类的基本类型是如何存储在内存中的?

Javascript 在V8中,诸如null、undefined和boolean之类的基本类型是如何存储在内存中的?,javascript,v8,javascript-engine,Javascript,V8,Javascript Engine,布尔值是否作为32位整数存储在内存中?一个null值怎么样 在书中, 它指的是一个类型标签,用于指示存储在内存中的值的类型。e、 g.对象类型的类型标签为000。什么是类型标签 我如何找到值类型的类型标记,例如布尔值或字符串?来自Andy Wingo的主题: 最初,所有JavaScript实现都使用标记指针来表示JS值。这是一个老把戏,它来自于这样一个观察:分配的内存至少占用4或8个字节,并且以这样一种方式对齐,即最低有效位或最低有效位将为零 因此,类型标记允许统一存储所有值。所有值占用一个机器

布尔值是否作为32位整数存储在内存中?一个
null
值怎么样

在书中, 它指的是一个类型标签,用于指示存储在内存中的值的类型。e、 g.
对象
类型的类型标签为000。什么是类型标签

我如何找到值类型的类型标记,例如
布尔值
字符串

来自Andy Wingo的主题:

最初,所有JavaScript实现都使用标记指针来表示JS值。这是一个老把戏,它来自于这样一个观察:分配的内存至少占用4或8个字节,并且以这样一种方式对齐,即最低有效位或最低有效位将为零

因此,类型标记允许统一存储所有值。所有值占用一个机器字(32/64位),根据标记(最低有效位)的不同,它们被解释为指向对象的指针或某个整数/布尔值/etc,具体取决于标记

布尔值在js内存中是否存储为32字节整数

布尔值也占用一个字。要获得更具体的答案,我需要浏览v8源代码。但如果我没记错的话,
true
false
表示为根指针

如何获取值类型(布尔、未定义、字符串、数字)的类型标记


没有办法从JavaScript实现这一点。这是内部实现的详细信息。

oh.good.Thank。但是有一些问题:什么是
根指针
,另外,您能从v8 source中找到“tag type”详细信息吗?@SKing7,很抱歉耽搁了。根对象或根指针是一个垃圾收集术语,它意味着对象是按定义活动的(v8的GC遍历从根开始的指针,以定义其中哪些是活动的,其余的得到GC)。看见关于你的第二个问题,为什么你需要标签(如果你仍然需要的话:-)?是的,关于标签的信息当然可以在v8源代码中找到。@RichS您可能是对的。您可以点击帖子下方的编辑按钮,提出编辑建议。=)值得一提的是,今天和未来对这个问题的答案将是具体实现的,在这种情况下,人们会希望谷歌搜索“v8”或类似的内容,而不是“javascript”。建议参考: