分析js中基本型別與引用型別的區別

2021-09-03 06:57:09 字數 1917 閱讀 9483

在最近的一段時間內,在學習web前端課程。課程老師講述到js內容部分時,淺略提到,關於基本資料型別與引用型別的區別,並希望學生自己在課餘時間進行了解。雖然該內容是乙個基礎知識,但容易混淆。

js變數有兩種不同的資料型別:基本型別、引用型別。基本資料型別包括:undefined,boolean,number,string,null。引用型別包括:object、array、regexp、date、function、特殊的基本包裝型別(string、number、boolean)以及單體內建物件(global、math)。

區別一:操作的方式不同

基本資料型別是按值訪問,可真實的去操作變數中實際的值。

引用型別,當複製操作該變數時,操作的是物件的引用;但在為物件新增屬性時,操作的是實際的物件。

區別二:值是否可變

對於基本資料型別而言,使用任何方式都不能改變它的值。從下面三行**中可以清晰的看出,經過touppercase(),並沒有改變name的值,而是生成的新的字串。

對於引用型別而言,值可以被改變。從下面可以看出,為array使用push方法後,在尾部新增了乙個值。也就是原本的存入的值被改變了。

區別三:是否能新增屬性和方法

基本資料型別不能夠為其新增屬性及方法。下面的**可以清晰的看出前面定義的age和method方法並沒有起作用,當被呼叫時依舊為undefined。

引用型別能夠為其新增屬性及方法,且能夠進行刪除。下面的**可以看出當person是乙個引用物件時,是可以進行新增操作的,並且生效了。

區別四:變數間的比較方式不同

對於基本資料型別:==與===是有區別的:

①不同型別之間(如string與number)先轉化同一種型別,再進行值的比較;

②===

的話如果型別不同,那麼直接就是false;

③同型別比較,直接進行值得比較。

對於引用型別:==與===沒有區別,就直接對其指標位址進行比較。

區別五:儲存方式不同

定義幾個基本資料型別的變數:var name = 『jozo』;var city = 『guangzhou』; var age = 22;它們的儲存情況為:

定義幾個引用型別的物件:var person1 = ;var person = ;var person3 = 它們的儲存情況為:

基本資料型別的變數存放的是基本型別資料的實際值;而引用型別的變數儲存對它的引用,也就是指標。基本資料型別與引用型別是兩種完全不同的資料型別。也希望這篇部落格能夠給入門的學者們對兩者的區別有一點的幫助。

js 基本型別 引用型別

1 基本的資料型別有 undefined,boolean,number,string,null.基本型別的訪問是按值訪問的,就是說你可以操作儲存在變數中的實際的值 基本型別的比較是值的比較。用 比較兩個不同型別的變數時會進行一些型別轉換。但是當兩個值的型別相同的時候,即使是 也相當於是 基本型別的變...

js中的基本型別和引用型別

基本資料型別 按值訪問,可操作儲存在變數中的實際的值。基本型別值指的是簡單的資料段。基本資料型別有這六種 undefined null string number boolean symbol es6 引用型別 當複製儲存著物件的某個變數時,操作的是物件的引用,但在為物件新增屬性時,操作的是實際的物...

js 引用型別和基本型別

js中的資料型別有以下幾種 基本型別 number boolean string undefined null symbol 引用型別 object array,function,date,正則物件,json物件 基本型別的資料是存放在棧記憶體中的,而引用型別的資料是存放在堆記憶體中的 複製變數值 ...