-
引用类型
js不能直接操作对象的内存空间,操作对象实际是在操作对象的引用,引用类型的值是按引用访问的
基本类型不能添加属性 -
复制变量值
基本类型赋值会对值进行复制,引用类型赋值会对引用进行复制 -
函数的参数传递
基本类型会复制值传递,引用类型会复制引用传递
修改基本类型的值不会改变原始对象,访问引用类型的值并修改其属性会影响原始对象
函数中给形参赋值,不会影响原始的引用 -
类型检测
typeof检测字符串数字布尔undefined类型是最佳工具,正则对象和null会返回object
instanceof用于检测引用类型 -
执行环境
分为全局环境和执行环境
每次进入函数执行环境会将将其推入环境栈,退出函数时将其环境弹出
每次进入环境会创建变量对象的作用域链,第一环为全局环境,最后一环为当前执行环境
函数作用域实际是活动对象,最开始只保存arguments一个对象,在全局作用域不存在
标识符查找是从作用域链末端到首端逐级向上查找
with语句和try-catch语句可以延长作用域链
局部作用域变量访问速度快于全局作用域的问题在IE9已经修复了
es5没有块级作用域,if语句,大括号,for循环中循环变量都可以在语句结束后访问
不用var声明的变量直接复制会添加到全局环境 -
GC
原理:找出不使用的变量,释放其内存 -
标记清除:
给所有内存中变量加标记,去掉环境变量以及环境变量引用的变量的标记,然后清除有标记的变量 -
引用计数:
引用类型值每次赋值给变量时引用次数加1,包含对这个值的引用的变量取得另外的值时引用次数减1
清除引用次数为0的值
引用计数的异常情况:
两个对象都的属性循环引用
BOM和DOM对象在IE9以前未被转化为真正的js对象,当时js对象和这些COM(组件对象模型)对象相互引用 -
触发GC:
window.collectGarbage() -
管理内存:
复制null解除引用,适合大多数全局变量和全局对象的属性,局部变量会再离开执行环境时自动解除引用
解除引用只能让值脱离执行环境,使其在下次GC时被回收
J高三-第四章学习笔记
最新推荐文章于 2024-11-05 22:07:06 发布