那么,值类型和引用类型有什么区别呢?最主要的一个,就是当变量类型为值类型时,变量存储的就是变量值本身,而当变量类型为引用类型时,变量存储的并不是变量值,而只是一个指向变量值的指针,访问引用类型的变量值时,首先是取到这个指针,然后是根据这个指针去获取变量值。如果将一个引用类型的变量值赋给另一个变量,最终结果是这两个变量同时指向了一个变量值,修改其中一个会同时修改到另一个: 代码如下: var a = { name:'linjisong', age:29 }; var b = a;//将引用类型的变量a赋给变量b,a、b同时指向了a开始指向的那个对象 b.name = 'oulinhai';//修改b指向的对象,也就是修改了a指向的对象 console.info(a.name);//oulinhai b = {//将变量重新赋值,但是b原来指向的对象没有变更,也就是a指向的对象没有变化 name:'hujinxing', age:23 }; console.info(a.name);//oulinhai
(2)函数名是指向函数对象的引用类型变量 代码如下: function fn(p){ console.info(p); } console.info(fn);//fn(p),可以将fn作为一般变量来访问 var b = fn; b('function');//function,可以对b使用函数调用,说明b指向的对象(也就是原来fn指向的对象)是一个函数