首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动提升会降低JavaScript的性能吗?

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

Stack Overflow用户
提问于 2021-01-16 08:05:18
回答 3查看 543关注 0票数 4

最近,我在研究Javascript的范围。我想知道自动提升是在编译时还是在执行代码时(运行时)完成的。如果在运行时这样做,那么我还有另一个问题:自动提升是否会降低Javascript程序的性能。

代码语言:javascript
复制
something = a(); 
function a(){
 console.log("hoisting");
 return 10;
}
var something; 

我们应该使用手动提升,还是使用自动提升更好?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-16 08:36:48

把我的意见作为回答:

人们对提升意味着什么有不同的理解。事实上,根据规范,每次调用一个函数时,都会创建一个新的执行上下文,该上下文包含一个新的环境。然后在新环境中创建功能体被处理。来查找所有变量声明(varletconst (和函数声明))以及这些名称的绑定。var声明使用undefined初始化。然后对身体进行实际评估。

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

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

票数 5
EN

Stack Overflow用户

发布于 2021-01-16 08:19:57

据我所知,没有任何性能问题。初始化是在编译时完成的。因此,无论您在顶部还是底部初始化,JS引擎都将在编译时创建引用。

如果您忘记在底部初始化,默认情况下它将被初始化为undefined。由于提升,将functionsvariables声明在各自作用域的顶部被认为是一种做法。

JavaScript:什么是提升?(推荐)

票数 5
EN

Stack Overflow用户

发布于 2021-01-16 08:23:28

它不是在运行时完成的。正在编译过程中。这样就不会拖慢表演了。在代码执行之前,编译器会扫描所有变量和函数声明,并在内存中分配它们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65747617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档