關(guān)于變量的基本類型和引用類型
基本類型包括 Undefined Null Boolean Number String.
這五種基本數(shù)據(jù)類型是按值訪問的,
因?yàn)榭梢圆僮鞅4嬖谧兞恐械膶?shí)際值.-
引用類型指的是由多個(gè)值構(gòu)成的對(duì)象,
引用類型的值是直接保存在內(nèi)存中的,
JavaScript是不允許直接訪問,
也就是說不能直接操作對(duì)象中的內(nèi)存空間.
那么在實(shí)際中操作對(duì)象操作的是引用!
1. 基本類型
var num1 = 5; var num2 =num1;
num1中保存的是的值是5,
第二句中用num1來初始化 num2的值
num2中的值也是5,但是兩個(gè)變量是相互獨(dú)立的.
2. 引用類型
var obj1 = new Object (); var obj2 = obj1; obj1.name = "zhangsan"; alert(obj2.name); // zhangsan
首先obj1 保存了一個(gè)新的對(duì)象.
然后這個(gè)對(duì)象復(fù)制給obj2,
那么obj1和obj2都指向同一個(gè)對(duì)象.
當(dāng)為obj1添加name屬性后那么obj2也可以訪問name屬性
來看下面這兩個(gè)例子:
var personA = { name = "wz", age = 18, }; var personB = personA; person.age = 19; console.log(personB.age);
var personA = { name = "wz", age = 18, }; var personB = personA.age; person.age = 19; console.log(personB.name);
第一段代碼 :
首先定義了一個(gè)變量personA指向一個(gè)對(duì)象
里面有兩個(gè)屬性分別是name和age,
name和age都是基本變量,
接下來把personA賦值給personB,
實(shí)際上是personA和personB指向同一個(gè)對(duì)象,
然后將19賦值給對(duì)象的age屬性.
改變了對(duì)象屬性的值,所以輸出是19;
第二段代碼所不同的是將對(duì)象的age屬性的值賦給personB,
這里的personB不再是指向?qū)ο蟮?它是一個(gè)具體的值,
所以這里的輸出是18!