您的位置:首页 > Web前端 > JavaScript

JavaScript中的基本类型和引用类型

2017-02-26 23:03 211 查看
学到一些新东西,总想记下来,不然总觉得会忘记。

一. 基本类型

所谓基本类型就是简单的数据段,比如:

Undefined,Null,Number,Boolean,String

都是JavaScript中的基本类型,它存储在栈中,可以直接进行访问。如下代码:

var a = 20;
var b = a;
a = 30;
console.log(a); //30
console.log(b); //20


说明,在重新声明一个b变量时,给b也分配了空间,并将a的值复制给b,a和b是两个不同的数据段。下面来看引用类型,可以看出和基本类型的区别。过程如下图:



二. 引用类型

引用类型有:

Object,Array,Function

与基本类型不同的是,引用类型分为两部分存储,在堆内存中存的是对象本身,在栈内存中存储的是对象的引用,即指针,指向对象本身,看下面的代码:

var obj1 = new Object();
obj1.name = "nihao";
var obj2 = obj1;
obj2.name = "hello";
console.log(obj1.name); //hello
console.log(obj2.name); //hello


从上面代码可以看出,在将obj1复制给obj2时只是将引用复制给了obj2,所以obj1和obj2指向同一对象,当两者的任一个改变,对象本身就会发生改变。过程如下图:



三. 其他一些区别

以上是基本类型和引用类型的本质区别,还有就是一些用法的区别

(1)基本类型不可以添加属性,引用类型可以添加属性

//基本类型添加属性
var a = '';
a.name = "nihao";
console.log(a.name); //undefined

//引用类型添加属性
var obj = new Object();
obj.name = "nihao";
console.log(obj.name); //nihao


(2)基本类型的比较是值得比较,引用类型的比较是引用的比较

//基本类型的比较
var a = 10;
var b = 10;
console.log(a == b);  //true

//引用类型的比较,两个引用指向不同的对象
var obj1 = new Object();
var obj2 = new Object();
console.log(obj1 == obj2); //false


关于基本类型和引用类型就总结这些,哪里理解不对,欢迎指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript