js内存泄露-----之所以造成内存泄露----js的自动垃圾回收机制
内存泄露是指一块被分配的内存 既不能被回收也不能被利用的尴尬
那造成内存泄露的常见情况
1:闭包 滥用闭包 因为闭包中的变量会保存在内存中 需要手动清除
2:dom元素
-------------------------------------------------------------------------------------------
js事件委托 也叫事件代理
事件委托的原理---委托他们的父级代为执行
事件委托是利用事件的冒泡原理来实现的,何为事件冒泡呢?就是事件从最深的节点开始,然后逐步向上传播事件,举个例子:页面上有这么一个节点树,div>ul>li>a;比如给最里面的a加一个click点击事件,那么这个事件就会一层一层的往外执行,执行顺序a>li>ul>div,有这样一个机制,那么我们给最外面的div加点击事件,那么里面的ul,li,a做点击事件的时候,都会冒泡到最外层的div上,所以都会触发,这就是事件委托,委托它们父级代为执行事件。
-----------------------------------------------
js同步 异步 阻塞 非阻塞 单线程 多线程
js是单线程的----主要用途与用户交互以及操做dom
正是因为有了回调函数 我们才能达到非阻塞的目的 非阻塞就是一直停不下来 停不下来
console.log("程序时间:"+newDate().getTime());
setTimeout(function () {console.log("暂停一秒:"+newDate().getTime());},1000);
console.log('这是暂停一秒之后的时间:'+newDate().getTime());
---------------------------------------------------------------------
node事件驱动理解
二、事件驱动模型
1.在Node.js中有一个事件队列,每个任务都会放入事件队列中,都会留下处理结果的回调函数,事件循环线程(个人感觉有点类似ios中的RunLoop)处理事件队列中的任务,直到回调函数不再存在。
2. 在无阻塞的情况下,作为一个带有回调的函数被放入事件队列中,事件循环线程中被提取并执行。
3.当执行过程中遇到I/O阻塞(读取文件、查询数据库、请求套接字、访问远程服务等)时,事件循环线程不会停下等待结果,转而继续执行队列中的下一个任务,不会在事件循环线程中执行。在函数执行时,Node.js在事件队列中放置回调函数,它的顺序根据函数的完成快慢决定。