JavaScript知识点复习(2)

JavaScript知识点复习(2)_第1张图片

一、Null 和 Undefined的区别

Null 表示“无”的对象,转换为数值时为0

典型用法:
a、作为函数的参数,表示该函数的参数不是对象;
b、作为对象原型链的终点。

Undefined表示一个“无”的原始值,转换为数值时为NaN

典型用法:
a、变量被声明,但未赋值;
b、调用函数时,应该提供的参数没有提供,该参数=undefined;
c、对象没有赋值的属性,该属性的值=undefined;
d、函数没有返回值,默认返回undefined。

二、Boolean

只有两个值:true 和 false;
转换函数 Boolean() : JS 所有类型的值都有与这两个Boolean值等价的值,具体的转换关系见下表:

JavaScript知识点复习(2)_第2张图片

三、检测类型

基本数据类型:

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来释放其引用)。这一做法适用于大多数全局变量和全局对象的属性,局部变量会在它们离开执行环境时自动解除引用。

解除引用的真正作用——让值脱离执行环境,以便垃圾收集器下次运行时将其收回。

你可能感兴趣的:(JavaScript知识点复习(2))