NodeJS缓存对array.length的访问吗



我最近一直在想,访问array.lengthgetter是否被NodeJS缓存,但我只能在浏览器中找到关于JS解释的结论性答案,但我正在用Typescript开发应用程序,所以这与我的问题无关(如果我错了,请纠正我(

那么,在NodeJS 14中访问时间复杂度为O(1((由NodeJS缓存(还是O(n((未由NodeJS高速缓存(的array.length

我有一种预感,它是缓存的,但我真的想要一个明确的答案或";证明;其中

如果您想问的是.length属性是否是通过每次计算数组元素从头开始计算的,那么它肯定不是这样工作的。它是Array对象的内部属性,在修改数组时进行维护。访问.length属性,只检索该内部属性值。如果这就是缓存的意思,那么是的,它是缓存的。

在某些特定情况下,优化编译器可以确保您的数组没有被修改(例如for循环只使用不修改数组的本地代码迭代数组(,编译器本身可能会将.length属性缓存在数组之外(但显然这不是您想要问的(。

最新更新