Javascript 无返回函数的缓存

Javascript 无返回函数的缓存,javascript,Javascript,我是JS新手,正在学习闭包。然后我想知道,如果不是返回一个函数来缓存返回的值,而是决定返回值本身,会怎么样。通过下面的代码,我们可以实现对返回值的缓存,这是真的吗 function heavyDuty(){ const hugeArray = new Array(1000000).fill("item"); return hugeArray; } let getHugeArray = heavyDuty(); getHugeArray[400] getHugeArray[400] 缓存计算值

我是JS新手,正在学习闭包。然后我想知道,如果不是返回一个函数来缓存返回的值,而是决定返回值本身,会怎么样。通过下面的代码,我们可以实现对返回值的缓存,这是真的吗

function heavyDuty(){
const hugeArray = new Array(1000000).fill("item");
return hugeArray;
}

let getHugeArray = heavyDuty();
getHugeArray[400]
getHugeArray[400]

缓存计算值需要将该值存储在另一个
函数内部,该函数
每次调用时都返回该预计算值。下面是一个使用缓存功能缓存
heavyDuty
的基本示例

函数heavyDuty(){
const hugarray=新数组(1000000)。填充(“项”);
返回Hugarray;
}
功能一次(fn){
计算常数=fn()
return()=>computed
}
常量cachedHeavyDuty=一次(重)
log('uncached equality check:',heavyDuty()==heavyDuty())

console.log('cached equality check:',cachedHeavyDuty()===cachedHeavyDuty())
昨天的区别在哪里?@NinaScholz,不幸的是,我在昨天的问题中没有得到必要的帮助,因此我再次提问,希望能得到足够的帮助。我有问题无法理解您的问题。函数返回一个数组。我既看不到缓存也看不到闭包。对我来说,如果你只需要一个值,就取这个值。如果您以后需要数组或其他信息,如其他值/索引,请使用数组。@NinaScholz,首先,感谢您抽出时间帮助我:)。不,我的意思是,根据我的研究,当我们希望通过缓存一个值来实现内存效率时,闭包是有帮助的。要做到这一点,我们需要返回一个函数,但如果我们不返回一个函数并返回一个值呢。那么,你的意思是在上面的代码示例中,没有缓存,我的意思是,如果我们多次执行GetHugarRay,就没有缓存了?你指的是记忆化吗?memonization确保在调用函数时只计算一个实例,而不管调用的次数如何。在您的情况下,
heavyDuty
将根据每次调用重新计算并创建一个新数组。您的示例不是缓存