为了账号安全,请及时绑定邮箱和手机立即绑定

JS 在幕后是如何工作的?

标签:
JavaScript
JavaScript 是如何工作的

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

全局执行上下文(GEC)

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

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

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

执行上下文阶段

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

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

函数执行上下文(FEC)

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

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

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

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

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

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

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

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

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

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

JavaScript 是单线程的

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

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消