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