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课程

你可能感兴趣的:(前端学习,javascript,前端,开发语言)