解析 JS 深层理论 2.0 (后续将持续更新)

一、 JS浏览器的线程。

(Java Script 属于一门单线程的编程语言,但本质上(是由主线程分支为)多条,子线程去分别执行,释:抛出一条主线程,其他子线程都放入浏览器的线程池中,由JS主线程调用。) 

JS线程包括:

①. JS主线程(js内核,js引擎) 

         负责处理javascript脚本的,为JS中的主线程,但实际上JS属于单线程异步语言。( 异步指的由子线程进行完成,该线程负责进行完成的内容,主线程值负责调度子线程,所以JS在某方面也可以说成多线程)

         与GUI线程是互斥,(其中一方运行时另一方暂停等待)

子线程包括:

②. GUI渲染线程:

        负责渲染浏览器页面,解析HTML,CSS,构建DOM数,Render数,布局和绘制等。

        当界面需要重绘(Repaint)或者由于某种操作引发回流(reflow)时,该线程就会在执行。

        与JS主线程互斥。

③.事件监听线程:

        用来完成事件处理的,例如 click,mouseover,mouseout.............

④.网络线程:

        用来处理http网络请求

⑤.计时器线程:

        用来处理定时器。setlnterval 和 setTimeout

总的来说是由以上五个线程组成的JS线程。

二:JS的异步代码 和 同步代码的区别

        同步代码指的就是被JS主线程执行的代码就是同步代码,如console.log() ,for()循环 ,等等

        异步代码就是指 被子线程执行的,代码就是异步代码,如计时器,事件处理函数,网络互交。

三:JS是只能运行在浏览器端的语言吗?

        是的:因为JS主要运行在浏览器端的,我们常用在浏览器端,

        不是的:运行在浏览器端的只是 ECMAscript + webAPI(BOM/DOM)两个部分组成的,如果说把 换一套API的话,那就运行到其他的端口。

四:什么是执行栈 ?  

(js运行环境称之为宿主环境,js的宿主环境就是浏览器)

            语句的先后顺序 与 运行环境中的 执行栈有关! 执行栈是一种数据结构叫(call stack),存放各种函数的执行环境(AO),每一个函数执行之前,会创建执行环境,然后加入至执行栈中,函数调用完后,执行栈 会销毁该函数的执行环境。(先进后出,后进先出)执行栈中放入的都是同步代码。 

             JS主线程永远只执行 执行栈中的栈顶位置的代码。                                                                                                                                                                     

事件循环

示例1.  以下代码执行多少次栈入栈出?

    function a(){
      console.log("a")
      b()
       }
    function b(){
      console.log("b")
         c()
         }
    function c(){
      console.log("c")
        }

       a()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值