js中的数据类型总体来说分为两种,他们分别是:
1 值类型(基本类型):数值型(Number),字符类型(String),布尔值型(Boolean),null 和 underfined
2 引用类型(类):函数,对象,数组等
值类型理解:变量之间的互相赋值,是指开辟一块新的内存空间,将变量值赋给新变量保存到新开辟的内存里面;之后两个变量的值变动互不影响;
例如:
var a=10;//开辟一块内存空间保存变量a的值“10”;
var b=a;//给变量b开辟一块新的内存空间,将a的值“10”赋值一份保存到新的内存里;
//a和b的值以后无论如何变化,都不会影响到对方的值;
引用类型理解:变量之间的互相赋值,只是指针的交换,而并非将对象(普通对象,函数对象,数组对象)复制一份给新的变量,对象依然还是只有一个,只是多了一个指引~~;例如:
var a={x:1,y:2}//需要开辟内存空间保存对象,变量a的值是一个地址,这个地址指向保存对象的空间;
var b=a;//将a的指引地址赋值给b,而并非复制一给对象且新开一块内存空间来保存;
//这个时候通过a 来修改对象的属性,则通过b 来查看属性时对象属性已经发生改变;
js解释器有自己的内存管理机制,当不再有任何一个引用指向一个对象时,解释器就会认为此对象没用了,然后在动回收此对象所占用的内存资源;
值类型都是对象(null和underfined除外),只是他们是伪对象;
对象/伪对象 都有属性和方法;
ECMAScript规定所有的对象都有toString()方法,无论是对象还是伪对象;
Number,String,Boolean值的原始/默认类型都是伪对象;他们都有属性,都有toString()方法;
null 和 underfined 没有属性和方法;