初始JavaScript

848 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

1.浏览器组件

浏览器的主要组件包括:

  1. 用户界面-包括地址栏、后退/前进按钮、书签目录等,也就是你所看到的除了用来显示你所请求页面的主窗口之外的其他部分

  2. 浏览器引擎-用来查询及操作渲染引擎的接口

  3. 渲染引擎-用来显示请求的内容,又称内核,例如,如果请求内容为html,它负责解析html及css,并将解析后的结果显示出来

  4. 网络-用来完成网络调用,例如http请求,它具有平台无关的接口,可以在不同平台上工作

  5. UI 后端-用来绘制类似组合选择框及对话框等基本组件,具有不特定于某个平台的通用接口,底层使用操作系统的用户接口

  6. JS解释器-用来解释执行JS代码

  7. 数据存储-属于持久层,浏览器需要在硬盘中保存类似cookie的各种数据,HTML5定义了web database技术,这是一种轻量级完整的客户端存储技术

浏览器本身并不h会执行JS代码,而是通过内置的JavaScript解释器来执行JS代码,JS解释器执行JS代码时逐行解释每一句源码(转为机器语言),然后由计算机去执行。

2、JS是单线程的

JavaScript的特点就是单线程,也就是说,同一时间只能做一件事。单线程就意味着,所有任务都需要排队,前一个任务结束之后,才能执行后一个任务。这样可能导致的问题是:页面渲染加载阻塞

3、同步和异步

1.同步任务:同步任务都在主线程上执行,形成一个执行栈

2.异步任务:JS的异步任务是通过回调函数实现的。一般而言,异步任务有以下三种类型:

  • 普通事件,如click、resize等
  • 资源加载,如load、error等
  • 定时器,如setInterval、setTimeout等 异步任务相关回调函数添加到任务队列中(任务队列又称消息队列)

4、JS执行机制

1.先执行执行栈中的同步任务

2.异步任务(回调函数)放入任务队列中

3.一旦执行栈中所有的同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,于是被读取的异步任务结束等待状态,进入执行栈,开始执行。