JavaScript中的基本类型和引用类型
2017-02-26 23:03
211 查看
学到一些新东西,总想记下来,不然总觉得会忘记。
一. 基本类型
所谓基本类型就是简单的数据段,比如:
Undefined,Null,Number,Boolean,String
都是JavaScript中的基本类型,它存储在栈中,可以直接进行访问。如下代码:
说明,在重新声明一个b变量时,给b也分配了空间,并将a的值复制给b,a和b是两个不同的数据段。下面来看引用类型,可以看出和基本类型的区别。过程如下图:
![](http://img.blog.csdn.net/20170226223754818?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUGlja2luZ191cF9zdG9uZXM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
二. 引用类型
引用类型有:
Object,Array,Function
与基本类型不同的是,引用类型分为两部分存储,在堆内存中存的是对象本身,在栈内存中存储的是对象的引用,即指针,指向对象本身,看下面的代码:
从上面代码可以看出,在将obj1复制给obj2时只是将引用复制给了obj2,所以obj1和obj2指向同一对象,当两者的任一个改变,对象本身就会发生改变。过程如下图:
![](http://img.blog.csdn.net/20170226223845740?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUGlja2luZ191cF9zdG9uZXM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
三. 其他一些区别
以上是基本类型和引用类型的本质区别,还有就是一些用法的区别
(1)基本类型不可以添加属性,引用类型可以添加属性
(2)基本类型的比较是值得比较,引用类型的比较是引用的比较
关于基本类型和引用类型就总结这些,哪里理解不对,欢迎指正!
一. 基本类型
所谓基本类型就是简单的数据段,比如:
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基本类型和引用类型
- JavaScript基本类型值与引用类型值
- javascript中基本类型和引用类型的区别分析
- JavaScript高级程序设计之引用类型之基本包装类型第5.6讲笔记
- javascript中基本类型和引用类型的区别分析
- 话说 JavaScript基本类型和引用类型 - 综述
- javascript 基本类型和引用类型的值【javascript高级程序设计】
- JavaScript引用类型——基本包装类型
- javascript中基本类型和引用类型的差别
- javascript基本数据类型与值类型引用类型说明
- 话说 JavaScript基本类型和引用类型 -Array类型
- javascript基本类型和引用类型,作用域和内存问题
- javascript 基本类型和引用类型的区别
- javascript 基本类型和引用类型
- javascript高级程序第三版学习笔记【基本类型和引用类型】
- javascript的基本类型和引用类型
- JavaScript学习笔记第一天——基本数据类型(值类型)和引用类型
- JavaScript数据类型之基本类型和引用类型的值
- javascript基本类型与引用类型
- JavaScript基本数据类型及值类型和引用类型