高程js第四章总结

1.基本类型和引用类型
基本类型:按值访问,
引用类型:按引用访问,但是操作添加属性时,确实是为对象添加属性

2.复制变量值
从一个变量向另一个变量复制基本类型时,会在变量对象上创建一个新值,然后把该值付给新变量分配的位置。
复制引用类型的值时,这个值其实是一个指针,而这个指针指向存储堆中的对象。

3传递参数
函数内部声明的变量在执行完之后就会被销毁。

4.检测类型
typeof 检测函数的时候,操作符会返回“function”
instaceof判断对象类型

5.执行环境的作用域
执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。
全景执行环境是最外围的一个执行环境。全局执行环境被认为是window对象。
某个环境中所有的戴拿执行完毕后,该环境被销毁,保存在其中的所有变量和函数定义页随之销毁。
每个函数都有自己的执行环境,函数的环境就会被推入一个环境站中,函数执行之后,栈将其环境弹出,把控制权返回到之前的执行环境,ECMAScript程序中的执行流正式在这个机制控制着。
当代码在一个环境下执行时,会创建变量对象的一个作用域链。
活动对象:存在于函数内部的变量和函数叫做活动对象
全局执行环境的变量始终是作用域链中的最后一个对象。
内部环境可以通过作用域链访问外部环境,而外部不能访问内部。每个环境只能向上,不能向下。

6.延长作用域链:
try-catch的catch块
with语句

7.没有块级作用域
在严格模式下,未经声明的变量,会导致错误,
声明变量
查询标识符

8.垃圾收集
js具有自动垃圾收集机制,执行环境会负责管理代码执行过程中代码执行过程中的内存。
这种收集机制的原理:找出那些不再使用的变量,然后释放他的内存,垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间),周期的执行这一操作
标记清除:
当变量进入环境,标记它为进入环境,当他离开的时候,将其标记为离开环境,垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记,他会去掉环境中的变量以及倍环境中的变量引用的变量的标记。在此之后在被加上标记的变量将被视为准备删除的变量,原因是环境中的变量已经无法访问到这些变量了。最后垃圾收集器完成内存清除工作,销毁那些代标记的值并回收他们所占用的内存空间。
引用计数法:
跟踪记录每一个值被引用的次数,当声明了一个变量并将一个引用类型赋值给该变量时,则这个值的引用次数为1,同一个值又被赋给另一个变量,则该值引用次数加1,如果包含对着值得引用的变量
又去了别得值,则这个值引用次数减一。当这个值的引用次数变为0时,无法再引用这个值了,就可以吧占用的空间回收了。
IE9把BOM DOM对象转换成了真正的js对象,这就避免了两种垃圾回收算法并村导致的问题,也消除了常见的内存泄露问题。

9.性能问题:
垃圾收集器是周期运行的,为内存分配数量很大,确定回收时间间隔很重要,刚开始IE按分配内存量运行的,达到某个临界值就会触发回收机制,会出现问题:一个脚本包涵很多变量,那么脚本会一直保存那么多变量,垃圾收集器就要不断触发。
IE7,js改变了方式:临界值变为动态的,回收的内存分配量低于15%,则变量,字面量,数组元素的临界值就会加倍。如果回收了85%则恢复默认值,

10.管理内存:
分配给web浏览器的可用内存数量通常要比分配给桌面应用程序的少,目的防止js的网页耗尽全部内存导致系统崩溃,内存限制问题给变量分配内存,同时还会影响调用栈以及,在一个线程中能够同时执行的语句数量,因此确定占用最少的内存可以让页面获得更好的性能。
优化内存占用的最佳方式,就是为执行中自保存必要的数据,一旦数据不再有用,最好通过设置值为null来释放其引用,这个叫做解除引用;
解除一个值的引用,并不意味回收该值所占用的内存,解除引用的真正作用是让值脱离执行环境,一遍垃圾收集器下次运行时回收。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值