【发布时间】:2022-01-20 18:41:21
【问题描述】:
this article 中声称 JavaScript 中的整数数组是由 C++ 整数数组实现的。
但是;根据MDN,除非您专门使用 BigInts,否则在 JavaScript 中所有数字都被抑制为双精度数。
如果我这样做:
cont arr = [0, 1, 2, 3];
V8 引擎中的实际表示是什么?
V8的代码是here on github,但是不知道去哪里看:
【问题讨论】:
-
V8 有时甚至使用 int16 或更低版本。它必须表现得像 IEEE754-2019 float64,但内部表示不需要是 float64。换句话说,只要从 JS 端观察不到 float64 行为以外的任何东西,就可以了。
-
这是真的——如果这个数字根本不被用作双精度数,为什么要用掉额外的内存?当您将其设为小数时,它可能开始为双精度数,否则,它可能只是
int或long。 -
似乎有些范式混为一谈。有人可以在代码中找到我给出的示例的实际表示吗?我看了但找不到。希望熟悉 v8 代码的人能够确切地知道该示例的数据结构在哪里实现。 mdn文章似乎是规范而不是接口。我认为查看实际代码(上面提供的链接)可以解决这个问题。
标签: javascript arrays double v8