是否boolean
在内存中存储为 32 位整数?null
值呢?
在《Speaking Javascript 》一书中,它指的是一种类型标签,用于指示存储在内存中的值的类型。例如,类型的类型标签Object
是 000。什么是类型标签?
如何找到值类型的类型标记,例如 aboolean
或string
?
是否boolean
在内存中存储为 32 位整数?null
值呢?
在《Speaking Javascript 》一书中,它指的是一种类型标签,用于指示存储在内存中的值的类型。例如,类型的类型标签Object
是 000。什么是类型标签?
如何找到值类型的类型标记,例如 aboolean
或string
?
来自 Andy Wingo关于该主题的博客文章:
最初,所有 JavaScript 实现都使用标记指针来表示 JS 值。这是一个古老的技巧,源于观察到分配的内存至少占用 4 或 8 个字节,并以最低有效位或 3 位为零的方式对齐。
因此类型标签允许统一存储所有值。所有值都占用一个机器字(32/64 位),并且根据标签(这是最低有效位或位),它们被解释为指向对象的指针或某些整数/布尔值/等,具体取决于标签。
布尔值是否在 js 内存中存储为 32 字节整数?
一个布尔值也占一个词。要获得更具体的答案,我需要查看 v8 源代码。但是如果我没记错的话,true
并且false
被表示为根指针。
如何获取值类型的类型标签(布尔值,未定义,字符串,数字);
没有办法从 JavaScript 做到这一点。这是内部实现细节。