從面試題中夯實基礎

問題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。

相關文章
相關標籤/搜索