首页 > 解决方案 > Javascript 引擎会提前看到常量变量吗?

问题描述

考虑这段代码

function getPow() {
    const a = 2
    return Math.pow(2, a)
}

如果a是一个常量并且它不被pow函数使用,javascript引擎会提前进行数学运算(创建阶段)并将结果放入return还是函数每次调用时都会进行计算?

所有引擎(V8、SpiderMonkey 等)都一样吗?

标签: javascriptv8

解决方案


是的,V8 的优化编译器支持“常量折叠”(即在编译时知道它们的输入时在编译时执行计算),并且这种优化确实会触发问题中的示例。

是否const a用于其他用途并不重要。

虽然所有引擎都这样做可能是真的,但它也是一个内部实现细节,我不建议依赖它(在任何引擎中)。在大多数情况下,它也不应该真正重要。


推荐阅读