JS进阶之---基本数据类型,引用类型,内存空间

 

一、内存空间:

 

  为了便于理解,我们暂且先将Js的内存分为栈内存和堆内存。

 

  JavaScript具有垃圾自动回收机制,内存的分配与回收都完全实现了自动管理。所以我们在开发时一般会忽视内存空间的问题。但是理解了内存空间,将会对JS理解更加深刻,认识也更加清晰。

 

  JavaScript有自动垃圾收集机制,那么这个自动垃圾收集机制的原理是什么呢?其实很简单,就是找出那些不再继续使用的值,然后释放其占用的内存。垃圾收集器会每隔固定的时间段就执行一次释放操作。

  内存的生命周期:分配内存,使用内存,释放内存

 

二、数据类型:

 

  5种基本数据类型:

 

    Number,Boolean,String,Undefined,Null

 

    基本类型是不可变的!任何方法都无法改变一个基本类型的值。

 var name = 'jozo';
 name.toUpperCase(); // 输出 'JOZO'
 console.log(name); // 输出  'jozo'

 

    也不可以给基本类型添加属性或者方法。

var person = 'jozo';
person.age = 22;
person.method = function(){//...};
console.log(person.age); // undefined
console.log(person.method); // undefined

 

  基本数据类型存放于栈内存。包括变量标识符和变量的值。

var name = 'jozo';
var city = 'guangzhou';
var age = 22;

 

            

 

  引用数据类型:

    Object,Array

 

    可以为引用类型添加属性和方法,也可以删除其属性和方法(delete person.name)。

 

    引用类型的存储需要内存的栈区和堆区共同完成,栈区内存保存变量标识符和指向堆内存中该对象的指针,也可以说是该对象在堆内存的地址,而堆内存中存储这个对象。

 

 var person1 = {name:'jozo'};
 var person2 = {name:'xiaom'};
 var person3 = {name:'xiaoq'};

 

               

 

三、数据比较: 

  1、对于基本类型,==和===是有区别的
    1)不同类型(如Number和String)间比较,==之间比较,先转化成同一类型,看“值”是否相等,===如果类型不同,其结果就是不等
    2)同类型比较,直接进行“值”比较

  2、对于引用类型,==和===是没有区别的
    进行“指针地址”比较

  3、基本类型与引用类型比较,==和===是有区别的
    1)对于==,将高级转化为基础类型,进行“值”比较
    2)因为类型不同,===结果为false

 

 

四、赋值:

 

  基本类型赋值后两个变量互不影响 

  var a = 10;

  var b = a;

       

 

  

  引用类型的赋值是地址的复制,所以两个变量指向的还是同一个对象,对任何一个的操作都会相互的影响。 

  var a = {};

  var b = a; 

   

转载于:https://www.cnblogs.com/lishuxue/p/6555357.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值