【发布时间】:2012-12-12 10:41:01
【问题描述】:
我一直想知道 JavaScript 如何在内部存储 null 值。 null 不同于任何值。我想象作用域的变量存储在某种结构数组中,每个结构对应一个变量。这个结构是否有某种称为“null”的布尔属性?
我会自己在 V8 源代码中寻找它,但我在 C++ 代码中很迷失 :(
我在 Google 上找不到任何内容。大多数结果都与诸如“如何确定变量是未定义还是为空?”之类的问题有关。或类似的。
【问题讨论】:
-
这可能取决于解释器,尽管我会惊讶地发现它与简单的零有很大不同。这不是一个真正重要的细节。
-
请记住,有几个“假”值:null、undefined、false、0 等。更可能的是,每个变量上都有一个“type”字段来指示该值是否为 null 、未定义、数字、布尔值、对象等。
-
@Pointy 当然,这取决于解释器。如果它将空值存储为零,那么为什么
(null === 0)返回false? -
@AalexGabi 因为 internal 表示不需要暴露给 JS 开发者。
-
“
null不同于任何值” -17也是如此。这是一种独特的位排列,取决于引擎。null与true或{ a: "b" }相比,没有什么特别之处。除非您编写 C++ 代码(即使用 V8 嵌入),否则您永远不需要知道它。那时可能还没有。
标签: javascript c++ null internal