js代码如何执行

在执行一段代码时,js先创立一个执行栈

· js创建全局执行上下文,push到执行栈中,为代码中所有变量分配内存并赋一个初始值(undefined)

· 执行阶段,JS引擎会逐行执行代码,即为之前分配好内存的变量逐个赋值(真实值)

· function的声明和调用 :JS引擎会创建一个函数执行上下文,并push到执行栈中,其创建和执行过程跟全局执行上下文一样。

特殊情况1:
函数中存在对其它函数的调用时,JS引擎会在父函数执行的过程中,将子函数的全局执行上下文push到执行栈,这也是为什么子函数能够访问到父函数内所声明的变量。

特殊情况2:
在子函数执行的过程中,父函数已经return,JS引擎会将父函数的上下文从执行栈中移除,与此同时,JS引擎会为还在执行的子函数上下文创建一个闭包,这个闭包里保存了父函数内声明的变量及其赋值,子函数仍然能够在其上下文中访问并使用这边变量/常量。当子函数执行完毕,JS引擎才会将子函数的上下文及闭包一并从执行栈中移除。

  • JS引擎是单线程的,那么它是如何处理高并发的呢?即异步调用

事件循环:
当异步调用代码触发时,JS引擎会将需要异步执行的代码移出执行栈call stack,直到等待到返回结果,JS引擎会立即将与之对应的回调函数push进任务队列中等待被调用,当执行栈中已经没有需要被执行的代码时,JS引擎会立刻将任务队列中的回调函数逐个push进栈并执行。

(前辈推荐的不错的博客:
JavaScript——变量对象

看过同样很详细的视频教程:
b站的渡一的js课程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值