資料型別和引用型別的區別

2021-07-11 03:10:24 字數 1222 閱讀 3337

//基本資料型別

var a = 3.14;

var b=a;

a=4;

alert(b);

//引用型別

var a=[1,2,3];

var b=a;

a[0] = 99;

alert(b);

js基本資料型別的變數存放的是基本型別資料的實際值;而引用資料型別的變數儲存對它的引用,即指標。

var a = [1,2,3];

var b = a;

a[0] = 2;

console.log(b[0]) //2, b的值隨著a的值改變而改,因為他們指向同乙個記憶體位址

var a = [1,2,3];

var b = a;

b = [11, 12, 13];//b指向了另乙個記憶體位址,與a斷開關聯

a[0] = 2;

console.log(b[0]) //11,b的值不隨a的值改變而改變

比如說 var a = 1; 1是基本資料型別,因此變數a存放的就是1這個值

var b = [1,2,3],[1,2,3]是引用資料型別,[1,2,3]是放在記憶體中的,而變數b存放的是[1,2,3]的位址,而不是[1,2,3]這個值

當使用b這個變數時,js直譯器會通過b存放的記憶體位址,找到記憶體中的相應位址,將其中的值取出來返回

引用型別——你和你同學公用乙個錢包 你取走3快 錢包就少了3快

你同學取走3快 錢包也會少了3快

值型別——你和你同學每人乙個錢包 你錢包裡有20 你給你同學看了下

你同學去找了20  也裝在他錢包裡 這樣 他錢包裡的錢 就和你的一樣

以後他的錢怎麼用 是他的事情 不會影響到你的錢包裡的錢 你錢包裡的

錢不會變 除非你自己用 相當於他的類怎麼變 也不會影響到你的類

基本型別在記憶體中具有固定的大小,而引用型別則不同。例如,物件可以具有任意的長度,無固定大小。陣列也是。

基本型別變數存的是資料的具體值,而引用型別變數儲存的是值的引用。

因此數值、布林值、null和未定義(undefined)都屬於基本型別。物件、陣列和函式則屬於引用型別。

string型別有些特殊,因為字串具有可變的大小,所以顯然它不能被直接儲存在具有固定大小的變數中。由於效率的原因,我們希望js只複製對字串的引用,而不是字串的內容。但是另一方面,字串在許多方面都和基本型別的表現相似,而字串是不可變的這一事實(即沒法改變乙個字串值的內容),因此可以將字串看成

基本資料型別和引用資料型別的區別

基本資料型別 string 字串 number 數值型別 boolean 布林型別 null 空 undefined 未定義 引用資料型別 date 日期 array 陣列 object 物件 function 函式 regexp 正規表示式 基本資料型別資料儲存發生在棧記憶體中 引用型別資料儲存,...

資料型別和引用型別

c 支援兩種型別 資料型別和引用型別。資料型別包括一些簡單型別 例如,char int和float 列舉型別和結構型別。引用型別包括類型別 介面型別 代表 delegate 型別和陣列型別。資料型別和引用型別的區別在於,資料型別變數直接包含它們的資料,然而引用型別資料是儲存對於物件的引用。對於引用型...

基本資料型別和引用型別的區別

一 基本資料型別 當把基本資料型別的變數賦值給另外乙個變數時,修改其中乙個變數的值,不會影響另外乙個變數的值,看下面的例子 從截圖中可以看出,修改了a的值,b的值不會變化。基本資料型別可以理解為雙胞胎,乙個改變,另外乙個不一定改變。二 引用型別 當把引用型別的變數賦值給另外乙個引用型別變數時,修改其...