一个简化的例子:
function shorten(string) {
return string.slice(0, 3);
}
const today = "Friday";
if (shorten(today) === "Fri") {
console.log("Oh yeah it's " + shorten(today));
}
shorten(today)
在这里被两次叫过,这让我很难过。我相信我们每天都会遇到这种情况,我们要做的是先将shorten(today)
的值存储在变量中,然后使用该变量两次。我的问题是:现代JS引擎是否足够聪明,以至于我实际上不必为此担心?
最佳答案
如果多次运行shorten
,则V8引擎将具有JIT编译器,该编译器将优化该代码段,以便下次运行速度更快。
当它第二次遇到相同的函数调用时,也许它能够意识到它进行了相同的计算,并且仍然将结果存储在内存中
您所描述的称为备忘录,而V8则不这样做。但是,那里有可以使用的库(例如fast-memoize
)。
但是最好的选择还是将计算结果存储在变量中并引用它。
关于javascript - 当我连续执行两次简单的JS函数时,它的计算能力是否会增加一倍?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54601304/