在V8中,如何将原始类型(如null,undefined和boolean)存储在内存中?

时间:2015-09-23 07:17:26

标签: javascript v8 javascript-engine

boolean是否在内存中存储为32字节整数? null值如何?

在书Speaking Javascript中, 它指的是类型标记,用于指示存储在内存中的值的类型。例如Object类型的类型标签是000.什么是类型标签?

如何找到值类型的类型标记,例如booleanstring

1 个答案:

答案 0 :(得分:3)

来自Andy Wingo关于这个主题的blog post

  

最初,所有JavaScript实现都使用标记指针来表示JS值。这是一个老技巧,来自观察到分配的内存占用至少4或8个字节,并以最低有效位或3为零的方式对齐。

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

  

布尔存储为js内存中的32字节整数?

布尔值也占用一个单词。对于更具体的答案,我需要通过v8源代码。但如果我没记错的话,truefalse将表示为根指针。

  

如何获取值类型的类型标记(boolean,undefined,string,number);

无法通过JavaScript完成此操作。这是内部实施细节。