第4章 变量、作用域和内存问题
2018-03-23 10:08:43 0 举报
AI智能生成
js高程第四章
作者其他创作
大纲/内容
4.2 执行环境及作用域
延长作用域链
try-catch语句的catch块
with语句
没有块级作用域
声明变量
使用var声明的变量会自动被添加到最接近的环境中
没有使用var声明的变量会自动被添加到全局环境中
查询标识符
在某个环境中为了读取或写入而引用一个标识符时,必须通过搜索来确定这个标识符实际代表什么
搜索过程从作用域链的前端开始,向上逐级查询,知道全局环境。
子主题
4.1 基本类型和引用类型的值
动态属性
只能给引用类型值动态的添加属性
复制变量值
基本类型值--创建一个新值,复制的变量和原变量互不影响
引用类型值--复制的副本实际上是一个指针,与原变量引用同一个对象
传递参数
若传递的是基本类型值,参数实际上是局部变量
若传递的是引用类型值,会把这个值的内存地址复制给一个局部变量,相应的变化会反映到函数外部
检测类型
基本类型值--typeof
引用类型值--instanceof [1,2,3] instanceof Array
4.3 垃圾收集
标记清除
变量进入环境时,将这个变量标记为“进入环境”,离开环境时标记为“离开环境”
引用计数
跟踪记录每个值被引用的次数
严重问题:循环引用(相互引用)
IE中的COM对象的垃圾收集机制采用的是引用计数
解决:手工切断
性能问题
确定垃圾收集的时间间隔是一个非常重要的问题
管理内存
分配给Web浏览器的可用内存数量通常要比分配给桌面应用程序的少
确保占用最少的内存可以让页面获得更好的性能
解除引用-一旦数据不再有用,将其值设为null
解除引用不意味着自动回收该值所占用的内存
真正作用是让值脱离执行环境,便于下次回收
0 条评论
下一页