• 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; 

       

  • 相关阅读:
    WPF 依赖属性
    WPF 利用附加属性创建FreezableCollection集合和反射实现控件参数以MVVM模式传递
    VS Code 使用插件让HTML和JS代码运行在火狐浏览器
    WPF 键盘导航附加属性解决TreeView的Tab导航焦点问题
    WPF 透视相机的UpDirection(向上方向)
    ABP框架——集成Mysql
    CentOS7部署.Net Core2.0站点(中)
    CentOS7部署.Net Core2.0站点(上)
    (转)非常完善的Log4net详细说明
    GitHub for Windows提交失败“failed to sync this branch”
  • 原文地址:https://www.cnblogs.com/lishuxue/p/6555357.html
Copyright © 2020-2023  润新知