一图汇总前端所有知识

本文理前端所有关键的知识点,偶尔看一眼,避免遗忘~

个人理解,对于前端有以下几个关键点需要掌握,下边的四条与其他语言差异较大:


1. js执行上下文

js的执行上下文与java、oc、c++等其他较为标准的面向对象并不一样,一般对于函数调用都是用普通的栈来表示就可以了。但是由于js的历史原因,单纯一个栈已经解决不了了。只能是两个栈:执行上下文栈和词法变量栈

2. this(可能是最好理解的版本了)

标准的面向对象语言中,都有一个self,用来指向类对象。而js中使用的是this,与self类似,最大的区别在于:

如果是函数嵌套,也就是说函数的外层并不是一个对象,那么子函数的this指向的是global

还有一点是需要注意:纯函数的this也是指向global的。很多人说这是js的设计缺陷,我觉得这并不是设计缺陷。理由如下:其实js在解析的时候,就有一个window对象来维护整个js代码,所以纯函数的this指向global跟我们面向对象的思维方式是一致的

3. 宏任务&微任务

宏任务有一个致命缺点:在宏任务A正在执行,任务队列中有BCD在排队,但是宏任务E比较着急怎么办呢?宏任务无法解决,应该是宏任务当时的设计缺陷,可能没想到js会这么火,从简单好用的角度来设计的,哭

    微任务就是给宏任务开了一个口子,将高优先级的宏任务E提升为微任务,添加到宏任务A的微任务列表中,宏任务A执行完之后,立刻执行微任务列表中的任务

4.js是单线程的,即js主线程,也叫渲染线程,在渲染进程中

 其实渲染线程权限是很少的,运行在沙盒中,不能进行IO访问、不能访问操作系统内核。渲染线程的权限都是浏览器进程控制的。

    还有一个网络进程,用于下载网页中的内容

    进程之间通过管道通信,渲染进程中的主线程与其他线程之间的通信是通过MQ来实现的。    


前端知识梳理,一图流,如下。图片中内容不够详尽,详情及精华请参阅https://mubu.com/doc/4OCulfWgD

转载请标明出处哦~


你可能感兴趣的:(一图汇总前端所有知识)