打个比方之前端概念

JS闭包

js一般执行环境就是大学考试,我考试交卷,最后老师只返回一个分数,试卷内容我没办法查看了,因为这个老师他比较勤劳,把看完的试卷记了分数就扔了。最后我就把分数记在笔记本上。 而闭包就是小学中学考试,考完试,老师不仅公报分数,还返回批改后的试卷,让我们课后可以查漏补缺。 但是这里问题来了,如果考试很多(上千万级别的),我书包放不下这么多试卷。但是我书包放一本笔记本可以记很多个分数。

回调函数(callback)

你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。

进程与线程

计算机像一个大工厂,工厂里有许多车间进行着不同的任务,进程就像这些工厂。而每个车间里又有工人在执行任务,线程是进程中执行代码的最小调度单位。

垃圾回收机制(Gabage Collection)

垃圾车(GC)会定时经过一个地方来转运,而不是时刻守在外面等人丢垃圾。

防抖与节流

想象每天上班大厦底下的电梯。把电梯完成一次运送,类比为一次函数的执行和响应。 假设电梯有两种运行策略 debounce 和 throttle,超时设定为15秒,不考虑容量限制。 电梯第一个人进来后,15秒后准时运送一次,这是节流。 电梯第一个人进来后,等待15秒。如果过程中又有人进来,15秒等待重新计时,直到15秒后开始运送,这是防抖。

事件委托/事件代理

有三个同事预计会在周一收到快递,为了签收快递,有两种办法:1.三个人在公司门口等快递;2.委托给前台MM代为签收。现实当中,我们大都采用委托的方案(公司也不会容忍那么多员工站在门口就为了等快递)。前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款。这种方案还有一个优势,那就是即使公司里来了新员工(不管多少),前台MM也会在收到寄给新员工的快递后核实并代为签收(可以给暂时不存在的节点也绑定上事件)。

updatedupdated2024-07-162024-07-16