基本数据类型和对象数据类型的区别

JavaScript中的数据类型一共有7中,分别是Number,Boolean,String,Null,Undefined,Symbol和Object。基本数据类型包含Number,Boolean,String,Null,Undefined以及Symbol。

基本数据类型与对象数据类型(Object)的区别在哪里呢?

  • 首先,基本数据类型的值不可改变,对象数据类型的值可以改变

其实当时看完这句话,我的内心是拒绝的,因为你看:

let number = 111;

number = 222;

console.log(number);

输出不就是222吗?

其实这样改变的并不是基本数据类型的值,而是一个变量的值。在存储区域中,111和222的地址是不会变的。

  • 其次,基本数据类型存储的是值,而对象数据类型存储的是指针

什么是指针(地址),嗯……对于学习过C/C++的人应该知道,有静态存储区和动态存储区,对于基本数据类型,它们都是存储在静态存储区的,它们有固定的地址,例如字符'a'在内存中就有固定的地址。而对于对象数据类型,它们存储的是指针,指针的作用就是存储你所想要访问数据的地址,画图来说大概就是这样:

http://ww1.sinaimg.cn/large/005Vjb0Sly1g9qqdp4xpzj30vf08xt8m.jpg)

所以,当我们对基本数据类型进行操作时:

let a=1;

let b = a;

b = 2;

console.log(a);

输出的a还是1,因为它不会因为b的值发生变化而受到影响。

如果是对象数据类型:

let c = [];

let d = c;

d.push(1);

console.log(c);

输出的结果就是[1]。

  • 再次,基本数据类型的比较是值的比较,对象数据类型的比较是地址的比较。

这个有了上面的例子,就比较好理解。因为对象是以地址来访问的,所以当我们比较的时候,其实比较的是内部的地址是否相同,而对于基本数据类型的比较,则是对于值是否相同来比较的。

总结一下,可以得出下表结论:

类型 基本数据类型 对象数据类型
无法改变 可以改变
属性和方法 无法添加 可以添加
存储值 指针(地址)
比较 值的比较 地址的比较
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容