js 不需要编译 是一个简单而强大的脚本语言 它的引擎或者说是执行器 就是浏览器
编写一个html文件 书写正确即可被浏览器识别 成为开发者便于使用的Dom
一个基本的浏览器 在最底层的三个组件分别是网络,UI后端和js解释器。作用如下:
(1)网络- 用来完成网络调用,例如http请求,它具有平台无关的接口,可以在不同平台上工作
(2)UI 后端- 用来绘制类似组合选择框及对话框等基本组件,具有不特定于某个平台的通用接口,底层使用操作系统的用户接口
(3)JS解释器- 用来解释执行JS代码
一般的浏览器都支持开发者模式 通过开发者模式了解Js的'多线程'机制
举个例子:一段ajax请求 向服务器请求资源 加载至页面需要时间,一般图片加载都很耗时 但浏览器不能等着图片加载 所以ajax请求默认是异步的 同步和异步的区别表现在时间上面 但是也可以理解成为空间上面 是资源的不对等即JS解释器只有一个 占据js资源空间的进程 但归根究底还是时间上的问题 因为代码的执行顺序 最终还是空间的问题 代码的上下决定了结果。
需要理清的一点是异步的表现 资源的请求还在继续 在网络层进行 js解释器则向下执行代码 所以会产生一个问题 即资源还没加载完 下面的操作就对相关的资源进行处理 导致BUG 为了应对这种情况 JS有几种方法处理异步编程(针对的情况是异步的资源请求)
一、回调函数
二、事件监听
三、发布/订阅
四、Promises对象
以上的处理方法基本都通过占用资源的请求来解决问题 即请求完毕后通知主程序.
还有一个奇葩 setTimeout() 它的使用不做赘述