您的位置:首页 > 其它

数据类型和引用类型的区别

2016-04-11 13:21 134 查看
       //基本数据类型

 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只复制对字符串的引用,而不是字符串的内容。但是另一方面,字符串在许多方面都和基本类型的表现相似,而字符串是不可变的这一事实(即没法改变一个字符串值的内容),因此可以将字符串看成
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据