Introduction to js event mechanism

<!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>

Guess you like

Origin blog.csdn.net/weixin_39472101/article/details/109646888