JS的基本概念
-
Browser进程
-
GPU进程
-
渲染进程
GUI线程 JS线程 事件触发线程 定时器触发线程
网络线程
- 插件进程、网络进程
数据类型
作用域
变量的可访问性和可见性
静态作用域,通过它就能够预测代码在执行过程中如何查找标识符
变量提升
var有变量提升
let、const没有变量提升,提前访问会报错
function函数可以先调用再定义
赋值给变量的函数无法提前调用
JS是怎么执行的
全局执行上下文:代码开始执行时就会创健,将他压缺行栈的栈底,每个生命周期内只有一份
函数执行上下文:当执行一个函数时,这个函数内的代码会被编译,生成变量环境、词法环境等,当函数执行结束的时候该执行环境从栈顶弹出
词法环境:基于ECMAScript代码的词法嵌套结构来定义标识符和具体变量和函数的关联。一个词法环境由环境记录器和一个可能的引用外部词法环境的空值组成
变量环境:变量环境和词法环境的一个不同就是前者被用来存储函数声明和变量(let和cost)绑定而后者只用来存储var变量绑定
Outer::指向外部变量环境的一个指针
JS的进阶知识点
this
普通函数的this指向window
1.对象调用指向对象
2.先赋值再调用,看调用的地方
1.创建临时对象
2.将this指向临时对象
3.执行构造函数
4.返回临时对象
垃圾回收
新生代空间:分成对象区域和空闲区域。对象区域放一些活跃对象和活跃变量,对象区域满了标记分类,把活跃对象放入空闲区域,然后两个区域反转。
老生代:比较大的变量和新生代未回收的变量
个人总结
我认为 js是一个非常强大的语言,它具有丰富的语法和强大的功能。学习 js需要一定的基础,包括语法规则、字符串操作、数据类型等。同时, js也需要大量的实践和练习,才能熟练掌握它。
其次,学习 js需要具备一定的编程思维和算法能力。js需要处理大量的数据,需要具备数据结构和算法的知识。只有掌握了这些知识,才能更好地理解和运用 js。
总的来说,学习 js是一个非常有意义且有趣的事情。通过学习 jS,我不仅掌握了很多有用的知识和技能,还提高了自己的编程思维和算法能力。我相信这些知识和技能将对我的职业发展产生重要的影响。