背景
基础不牢地动山摇。
原始值与引用值
原始值:Undefined Null Boolean Number String Symobol BigInt
引用值:在内存中的对象,不能直接操作对象所在的内存空间,操作的是对该对象的引用。
-
动态属性
-
复制值
引用类型复制指针 值类型直接复制 -
传递参数
按照值传递参数 -
确定类型
typeof instanceof
执行上下文与作用域
每个上下文都有一个关联的变量对象,上下文中所有定义的所有变量和函数都存在于该对象上。上下文中的代码在执行时,会创建变量对象的一个作用域链,代码执行时的标识解析通过作用域链最前端开始逐级往后,如果无标识符,则报错。
-
作用域链增强
-
变量声明
var let const(对象的键不受限制) 建议使用多const
垃圾回收
确定那个变量不会再使用,然后释放它占用的内存。
-
标记清除
标记内存中的所有变量=>去掉标记=>再次被标记的就是待删除的 -
引用计数
对每个值都记录被引用的次数=>引用数为0=>删除 存在循环引用 -
性能
内存中的变量越多,性能损失越大 -
内存管理
使用let const声明提升性能 隐藏类和删除操作 内存泄露 静态分配与对象池 如何减少浏览器进行垃圾回收的次数? vectorPool
小结
变量 作用域 内存是相关性较高的,理清关系写出性能更好的代码。