![](https://img.haomeiwen.com/i5350030/e7c7633022e47e29.jpg)
一、Null 和 Undefined的区别
Null 表示“无”的对象,转换为数值时为0
典型用法:
a、作为函数的参数,表示该函数的参数不是对象;
b、作为对象原型链的终点。
Undefined表示一个“无”的原始值,转换为数值时为NaN
典型用法:
a、变量被声明,但未赋值;
b、调用函数时,应该提供的参数没有提供,该参数=undefined;
c、对象没有赋值的属性,该属性的值=undefined;
d、函数没有返回值,默认返回undefined。
二、Boolean
只有两个值:true 和 false;
转换函数 Boolean() : JS 所有类型的值都有与这两个Boolean值等价的值,具体的转换关系见下表:
![](https://img.haomeiwen.com/i5350030/363d1164eb2e8119.jpg)
三、检测类型
基本数据类型:
typeof操作符是确定一个变量是字符串、数值、布尔值,还是udefined的最佳工具。如果变量的值是一个对象或null,则typeof操作符会返回“object”。
引用类型:
instanceof操作符
语法:result = variable instanceof constructor
alert(person instanceof Object);//变量person是Object吗?
如果变量是给定引用类型的实例,instanceof操作符就会返回true。(所有引用类型
的值都是Object的实例)
四、垃圾收集
JavaScript具有自动垃圾收集机制,执行环境会负责管理代码执行过程中使用的内存。
1、标记清除(最常用的垃圾收集方式)
当变量进入环境时,就将这个变量标记为“进入环境”;当变量离开环境时,则将其标记为“离开环境”。从逻辑上讲,永远不能释放进入环境的变量所占用的内存。
2、引用计数(不太常见)——跟踪记录每个值被引用的次数。
当某个值的引用次数变成0时,就可以将其占用的内存空间收回来。
存在一个严重的问题:循环引用
3、性能问题
在IE中,调用window.CollectGarbage()方法会立即执行垃圾收集;
在Opera 7 及更高版本中,调用window.opera.collect()方法也会启动垃圾收集历
程。
4、管理内存
分配给Web浏览器的可用内存数量通常要比分配给桌面应用程序的少,防止运行JavaScript的网页耗尽全部系统内存而导致系统崩溃;内存分配问题不仅会影响给变量分配内存,同时还会影响调用栈以及在一个线程中能够同时执行的语句数量。
优化内存的最佳方式——解除引用(执行的代码只保存必要的数据,一旦数据不再有用,最好通过将其值设置为null来释放其引用)。这一做法适用于大多数全局变量和全局对象的属性,局部变量会在它们离开执行环境时自动解除引用。
解除引用的真正作用——让值脱离执行环境,以便垃圾收集器下次运行时将其收回。
网友评论