手记

JS 在幕后是如何工作的?

JavaScript 是如何工作的

JavaScript 在单线程环境中运行,意味着它一次只能执行一个任务。它通过执行上下文(EC)来处理代码的执行,这些执行上下文可以是全局执行上下文(GEC)或函数执行上下文(FEC)。

全局执行上下文(GEC)

  • 在加载代码文件时创建。

  • 全局执行上下文(GEC)负责设置全局对象(在浏览器中是 window)和 (this) 关键字。

  • 全局作用域中声明的所有变量和函数都存储在全局执行上下文中。

执行上下文阶段

  • 内存创建阶段:
    在内存创建阶段,JavaScript 为变量和函数分配内存。
    变量最初被赋值为 undefined,而函数则会连同其完整定义一起存储在内存中。

  • 执行阶段:
    内存分配阶段完成后,JavaScript 开始逐行执行代码。
    变量被赋予实际值,函数被执行。

函数执行上下文(FEC)

  • 每当调用一个函数时,JavaScript 会为该函数创建一个新的执行上下文。

  • 每个函数的执行上下文分为两个阶段:

  • 内存阶段:为函数内的局部变量和函数分配内存。

  • 执行阶段:执行函数体,变量获得实际值。

  • 执行完成后,函数的执行上下文被销毁,释放了内存。

返回语句
一旦函数遇到返回语句,函数会立即退出,并且其执行上下文将从调用栈中移除。任何写在返回语句之后的代码都不会被执行。

调用栈
JavaScript 使用调用栈来管理执行上下文。

  • 使用后进先出(LIFO)的概念:

  • 当调用一个函数时,它的执行上下文会被放到栈顶。

  • 一旦函数完成(或达到 return 语句),其执行上下文就会从调用栈中移除。

JavaScript 是单线程的

单线程意味着JavaScript一次只能执行一个操作,但它仍然可以执行异步操作,这不是很有趣吗?在我的下一篇文章中,我们将讨论JavaScript这一神奇的功能。

0人推荐
随时随地看视频
慕课网APP