数字的大小(在内存中)是多少

What is the size (in memory) of a number?

本文关键字:多少 内存 数字      更新时间:2023-09-26

JavaScript 中数字的大小是多少?

例如,我知道 C 中的单个字符是 1 个字节。int 的大小是 sizeof(int) 。int64_t上的大小为 64 位,依此类推。

JavaScript中数字(十进制,浮点数)的大小是多少(以及如何找到它)?

您无法确定 JS 中数字值大小的内存大小。它是特定于引擎的,并且在同一引擎中的不同值之间可能不同。ECMAScript 标准(例如 ECMA-262)只定义了数字的可观察行为,但只要行为最终符合规范,不同的 JS VM 就会在后台使用各种不同的数字类型进行优化。

标准对引擎可以使用的内容没有限制,也没有定义检索这些实现细节的方法。规范的任何其他部分也不依赖于除了可观察行为之外的任何内容。您可以在其文档中查看特定于引擎的详细信息,也可以尝试特定于引擎的内部调试工具,但无法从 JS 代码本身获取此大小的数据。

除了其他答案中提到的内容外,现实情况是现代引擎使用各种优化,包括根据使用情况以各种不同的方法(类型...)存储数字。这是像asm.js这样的事情背后的主要思想之一,只是提供一个简单的例子:

var i = 0;
while(i < 5) {
  console.log('hello');
  i++;
}

引擎可以推断i是一个整数并优化其使用情况。