从面试题中夯实基础

问题1: js的基本类型有哪些?引用类型有哪些?引用类型和基本类型有什么区别?

答:js基本类型:String、Number、Boolean、Null、Undefined。

  js引用类型:Array、Object、Function。

  举个例子来解释引用类型和基本类型的区别

var a = 10;   
var b = a;
b = 20; // b = 20 a = 10

  上面,b获取值是a值的一份拷贝,虽然,两个变量的值是相等,但是两个变量保存两不同的基本数据类型值。b只是保存了a复制的一个副本。所以,当b的值改变时,a的值依然是10; 

  过程如下图所示:

再举个引用类型的例子:

var obj1 = new Object();
var obj2 = obj1;
obj2.name = "Nick";
console.log(obj1.name); // Nick

声明了一个引用类型obj1,并且赋值给了obj2;此时他们俩指向的是同一个堆内存,也就是说,一旦内存里的值改变了,那么相应引用它的对象也会发生改变,

所以obj1的name字段也变成了‘Nick’。

如下图所示:

  

  

问题2: null和undefined的区别?

答:说到这俩的区别,也没啥好说的,因为他们的表现都是一样的,!null和!undefined都是true,甚至null == undefiend 也是true。如非要给他们做个区别,

那就要扯到90年代,JavaScript的最初版本没有包括错误处理机制,发生数据类型不匹配时,往往是自动转换类型或者默默地失败。Brendan Eich觉得,如果null自动转为0,很不容易发现错误。因此,Brendan Eich又设计了一个undefined。

说的再细致一些就是,null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。

原文地址:https://www.cnblogs.com/Nick-chen/p/7940860.html