<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<button type="button">bt1</button>
<script type="text/javascript">
/**
* 浏览器是单进程还是多进程?
* 有的是单进程: Firefox 、老板的IE
* 有的是多进程: chrome 、新版的IE
*
* 如何查看浏览器是多进程还是单进程?
* 从任务管理器中查看
*
* 浏览器运行都是 多进程
*
* 浏览器内核指什么?
* 支持浏览器运行的核心程序(这真是扯犊子啊)
*
* 不同的浏览器的内核不一样
* chrome、safari: webkit
* firefox:Gecko
* IE: trident
*
* 浏览器内核由多种模块组成:
* html、css 文档解析模块 负责页面文本解析
* dom、css模块 负责dom、css 在内存中的相关处理
* 布局和渲染模块 负责也买你布局和效果绘制
*
* 定时器模块、网络请求模块、事件响应模块等
*
* 定时器并不是真的保证真正定时执行,有误差
*
* 定时器回调函数是在分线程中执行的吗 ?
* 不是,是在主线程执行的,js是单线程
* 定时器的实现原理:事件循环模型
*/
// document.getElementsByTagName('button')[0].onclick = function(){
// console.log("start")
// setTimeout(function(){
// console.log("ing")
// },1000);
// console.log("end")
// for (var i = 0; i < 100000000000000; i++) {
// }
// }
/**
* 如何证明js是单线程的?
* 定时器中的回调函数是在主线程中执行的,只有主线程中的代码执行完,才会执行定时器中的代码
*
* 为啥js要使用单线程,而不是用多线程?
* 和它的主要用途有关,它主要是和用户交互,不能是多线程
*
* 代码的分类: 初始化代码和回调代码
*
* js引擎执行代码的流程:
* 先执行初始化代码(一些特殊的代码 设置定时器、绑定事件监听、发送ajax请求),
* 然后执行回调方法(回调函数中的代码)
*
* js引擎模型中两个重要的组成部分:事件(定时器、DOM事件、ajax)管理模块、回调队列
*
* js引擎模型处理流程:
* 执行初始化代码,将事件回调函数交给对应的模块
* 当事件发生时,管理模块将会将回调函数添加到回调队列中
* 只有当初始化代码执行完后,才会遍历读取回调队列中的回调函数
*/
</script>
</body>
</html>
Introduction to js event mechanism
Guess you like
Origin blog.csdn.net/weixin_39472101/article/details/109646888
Recommended
Ranking