问题1: js的基本类型有哪些?引用类型有哪些?引用类型和基本类型有什么区别?spa
答:js基本类型:String、Number、Boolean、Null、Undefined。设计
js引用类型:Array、Object、Function。code
举个例子来解释引用类型和基本类型的区别对象
var a = 10;
var b = a;
b = 20; // b = 20 a = 10
上面,b获取值是a值的一份拷贝,虽然,两个变量的值是相等,可是两个变量保存两不一样的基本数据类型值。b只是保存了a复制的一个副本。因此,当b的值改变时,a的值依然是10; blog
过程以下图所示:ip
再举个引用类型的例子:内存
var obj1 = new Object(); var obj2 = obj1; obj2.name = "Nick"; console.log(obj1.name); // Nick
声明了一个引用类型obj1,而且赋值给了obj2;此时他们俩指向的是同一个堆内存,也就是说,一旦内存里的值改变了,那么相应引用它的对象也会发生改变,io
因此obj1的name字段也变成了‘Nick’。console
以下图所示:class
问题2: null和undefined的区别?
答:说到这俩的区别,也没啥好说的,由于他们的表现都是同样的,!null和!undefined都是true,甚至null == undefiend 也是true。如非要给他们作个区别,
那就要扯到90年代,JavaScript的最第一版本没有包括错误处理机制,发生数据类型不匹配时,每每是自动转换类型或者默默地失败。Brendan Eich以为,若是null自动转为0,很不容易发现错误。所以,Brendan Eich又设计了一个undefined。
说的再细致一些就是,null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。