您的位置:首页 > Web前端 > JavaScript

高程js第四章总结

2018-02-08 02:33 260 查看
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来释放其引用,这个叫做解除引用;解除一个值的引用,并不意味回收该值所占用的内存,解除引用的真正作用是让值脱离执行环境,一遍垃圾收集器下次运行时回收。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  高程