1. 程式人生 > >引用類型和值類型

引用類型和值類型

示例 script 什麽 比較運算 als asc ber javascrip ava

javascript中一切都是對象(引用類型),除了這幾個類型的字面量(值類型):Boolean(如:true)、Number(如:100)、undefined、null。

註意:值類型==引用類型,引用類型會先轉化一次

var date1 = new Date(2013,1,1);
var date2 = new Date(2013,1,1);
date1 == date2; //執行結果為false
date1 === date2; //執行結果為false

var num1 = new Number(10);
var num2 = new Number(10);
num1 == num2; //執行結果為false
num1 === num2; //執行結果為false
num1 == 10; //執行結果為true
10 == num2; //執行結果為true
num1 === 10; //執行結果為false
10 === num2; //執行結果為false之所以要寫這個主題,是因為日期類型的比較經常會出現意想不到的錯誤,幾乎每個剛接觸javascript的開發人員都會遇到這個問題。

到底是為什麽規則1javascript中一切都是對象(引用類型),除了這幾個類型的字面量(值類型):Boolean(如:true)、Number(如:100)、undefined、null。

規則2引用類型之間用"=="或“===”做比較運算時,只要兩者不是指向同一份內存地址,都會返回false。

代碼示例1 var date1 = new Date(2013,1,1);

var date2 = new Date(2013,1,1);
date1 == date2; //執行結果為false
date1 === date2; //執行結果為false圖片示意

引用類型和值類型