- 基本类型值指的是简单的数据段。
Undefined、Null、Boolean、Number、String这五种基本数据类型是按值访问的,因为可以操作保存在变量中的实际值。 - 引用类型值指的是由多个值构成的对象。
引用类型的值是保存在内存中的对象。js不允许直接访问内存中的位置,就是说不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象,引用类型的值是按引用访问的。
var obj1=new Object();
var obj2=obj1;
obj1.name="hello";
alert(obj2.name);//"hello"
- 传递参数
ECMAScript中所有的函数的参数都是按值传递的。访问变量有按值和按引用两种方式,而参数只能按值传递。
function setName(obj){
obj.name="hello";
obj=new.Object();
obj.name="world";
}
var person=new Object();
setName(person);
alert(person.name);//"hello"
如果person是按引用传递的,那么person就会自动被修改为指向其name属性值为“world”的新对象,但是最后person.name的值仍然为“hello”说明即使在函数内部修改了参数的值,但原始的引用仍然保持未变。
- 检测类型
检测一个变量是不是基本数据类型用typeof操作符。它是确定一个变量式字符串、数值、布尔值,还是undefined的工具。如果变量的值是一个对象或者null,则会返回object。
但在检测引用类型的值时,我们想知道他是什么类型的对象。可以用instanceof操作符:
alert(person instanceof Array);//false
如果使用instanceof检测基本类型的值,则始终会返回false,因为基本类型不是对象。