JS变量提升、scopes以及闭包的介绍

深入研究JavaScript编程的细节,从执行上下文、变量提升、作用域和闭包的奥秘开始。
理解这些概念是开发高效JavaScript编程的关键。
让他们一起发现他们的秘密。

Angular执行上下文

JavaScript引擎使用Angular执行上下文,有效降低了函数和模块中代码的复杂度。
它在运行时创建一个执行引擎上下文,并负责正在运行的代码的执行。
初始全局执行上下文是从浏览器窗口对象或Node.js全局对象构造的,并从“this”变量开始。

执行上下文的生命周期分为创建和执行两个阶段:创建部分主要是对象的构造、内存分配以及前面的函数声明;给变量赋值。

变量提升和执行上下文

在代码执行之前,JavaScript引擎将提升变量并声明“未定义”创建阶段。
当调用函数时,将创建一个与上下文无关的执行上下文,其中包含该函数的参数、内存空间、函数声明和默认值。

全局上下文和函数执行的区别

全局执行上下文从全局对象的创建开始,而函数上下文不会继续这个过程,局部变量被限制在内部。
关于角色每次调用函数时,都会将新的执行上下文添加到堆栈中,并且执行后局部变量仅在函数的生命周期内有效。

“范围”框

定义代码可访问区域的范围。
清楚地了解执行上下文可以让我们更好地理解作用域的操作。
例如,在函数foo中,结果bar变量被声明为infoo,因为它是由foo的执行上下文终止的。

但是函数内部的局部变量不能少。
当函数嵌套时,子函数可以访问外部函数的变量,形成著名的闭包,这是JavaScript中的一个强大功能。

代码执行检查

测试代码显示,函数foo内部变量bar未定义。
但闭包允许子函数访问外部函数的变量。
在控制台中,我们可以看到搜索变量从内部跟踪源到全局目标。

全局变量的特殊状态

在JavaScript中,全局变量是在全局执行上下文中创建的。
新篇章be和const

与旧的var不同,一种新的变量和const处理方式,以及它们的特性和生命周期值得最深入的研究。
如果您想了解更多,请点击链接探索:

深入理解JavaScript的this关键字、调用、应用和绑定

掌握这些核心概念,你就会能够更加自信地掌控JavaScript。
立即行动,开始您的JavaScript编程之!

js的变量提升是如何实现的?

JavaScript引擎的工作方式是首先解析代码以获取所有声明的变量,然后逐行运行它。
这样,所有的变量声明语句都会被提升到代码的开头,称为变量提升。
不过let和const的存在可以避免变量广告带来的问题。