一、JS的基本概念
单线程;动态、弱类型;面向对象、函数式;解释类语言、JIT;安全、性能差等等。
动态语言(弱类型语言)是运行确定数据类型的语言,变量在使用之前无需申明类型:eg:const company=‘Bytedance’;
静态语言是编译时变量的数据类型就需要确定的语言
eg:String company =’Bytedance’;
1、作用域:变量的可访问性和可见性。静态作用域,通过它就能够预测代码在执行过程中如何查找标识符
2、变量提升:var有变量提升;let、const没有变量提升,提前访问会报错;function函数可以先调用再定义;赋值给变量的函数无法提前调用
二、JS是怎么执行的
1、词法环境:基于ECMAScript 代码的词法嵌套结构来定义标识符和具体变量和函数的关联。一个词法环境由环境记录器和一个可能的引用外部词法环境的空值组成
2、变量环境:变量环境和词法环境的一个不同就是前者被用来存储函数声明和变量(let和const)绑定,而后者只用来存储var 变最绑定
3、Outer:指向外部变量环境的一个指针
三、JS的进阶知识点-this
1、当以函数的形式调用时,this是window。2.当以方法的形式调用时,谁调用方法this就是谁。3.当以构造函数的形式调用时,this就是新创建的那个对象。4、使用call和apply调用时,this是指定的那个对象
JS的进阶知识点-垃圾回收
1、垃圾标记;2、对象复制;3、区域反转
四、其他
1、变量环境里面有一个指向外部函数执行上下文的指针,形成了作用域链
2、基础数据类型存在栈上,复杂数据类型存在堆上
3、一个执行上下文包括变量环境、语法环境、this
4、全局执行上下文只有一份。
总结:今天的课程是比较重要的部分,但是对于具体的代码操作部分还是有很多不熟悉。对于JS的执行、闭包、垃圾回收的内容知之甚少。