自动提升会降低JavaScript的性能吗?

最近,我正在研究 Javascript 中的 Scope。我想知道自动提升是在编译时完成还是在执行代码时(运行时)完成。如果它在运行时确实如此,那么我还有另一个问题,自动提升是否会降低 Javascript 程序的性能。

something = a(); 
function a(){
 console.log("hoisting");
 return 10;
}
var something; 

是用人工吊装好还是自动吊装好?

回答

把我的评论作为答案:

人们对提升的含义有不同的理解。事实是,根据规范,每次调用函数时都会创建一个新的执行上下文,其中包含一个新的环境。然后处理函数体以查找所有变量声明(var, let, const(和函数声明))并在新环境中创建这些名称的绑定。var声明用undefined. 然后身体被实际评估。

考虑到这一点,从引擎的角度来看,将var声明放在哪里并不重要,无论如何都必须处理整个主体。

话虽如此,如果实际实现没有缓存该信息,我会感到惊讶。毕竟,函数中的变量声明在函数调用之间不会改变。

  • You mean because the name of the algorithm is "FunctionDeclarationInstantiation"? Despite that name, the exact same algorithm is used to the evaluate the body of function expressions.

以上是自动提升会降低JavaScript的性能吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>