• 函数的存储 堆和栈


       var int1 = 100;
            var int2 = 100;

            console.log( int1 == int2 );

            function fun1(){
                return 100;
            }

            function fun2(){
                return 100;
            }

            // 当前 比较的是 函数名称 fun1 中存储的内容 和 函数名称 fun2中存储的内容
            // 不是 比较 fun1 和 fun2 函数的执行结果
            console.log( fun1 == fun2 );//false

            // 如果输出查看函数名称
            // 虽然不能看到内存地址,但是我们可以看到,内存地址中,存储的字符串形式的函数程序
            // 看不到内存地址的原因是,浏览器会自动根据内存地址,找到对应的存储空间,显示其中存储的内容
            console.log( fun1 );

            // 有()是在调用函数,没有()是函数的名称
            // 这里是比较两个函数的返回值 
            console.log( fun1() == fun2() );//true

            // 函数的定义和函数的存储

            // 函数的定义封装阶段,程序的执行过程
            // 1,不管函数还是变量,都是存储在内存之中的
            //   会先在内存中,开辟一个存储空间,来准备存储函数
            //   并且 操作系统 会给 这个存储空间 定义一个 内存地址 
            // 2,将函数定好的内容,存储在这个内存空间中
            //   此时 函数的程序 内容 是以 类似于 字符串的形式来存储
            //   此时 并没有执行 函数的程序 , 只是以字符串的形式存储在内存空间中
            // 3,将 内存空间的 内存地址 赋值给 函数名称(声明式) / 变量(匿名函数/赋值式) 进行存储
            //   实际上 函数名称 / 变量  中  实际存储的是 内存地址

            // 函数的调用和执行
            // 1,读取 函数名称 / 变量 中 存储的内存地址
            // 2,通过 内存地址,找到存储变量的内存空间,获取对应的函数程序
            // 3,给函数中的参数,进行赋值
            // 4,执行函数 的 预解析 / 预解释 
            // 5,执行函数中存储的代码程序
     
        在 内存 中 操作系统将内存分成了两个部分, 堆 和 栈 

            堆和栈的作用不同,存储不同的数据类型

            栈 存储基本数据类型 布尔类型 数值类型 字符串类型 undefined null 
            堆 存储引用数据类型 函数 数组 对象 

            栈 是 以 有序的方式 存储数据 
               先定义变量,会存储在栈的最下方
               存储 基本数据类型 变量中 存储的就是 数据数值

            堆 是 以 无序的方式 存储数据
               函数等,数值数值 存储在 堆 中 
               变量名称 / 函数名称 存储在 栈 中 
               变量名称 / 函数名称 中存储的是 堆 行中 内存空间的内存地址

            
            总结:
                基本数据类型比较,比较的是 存储的数值数据
                引用数据类型比较,比较的是 存储的内地地址

                基本数据类型,赋值,赋值的是 存储的数据数值
                引用数据类型,赋值,赋值的是 存储的内存地址


                即时两个应用数据类型,数据内容都完全一致
                因为存储的内存空间不同,变量名称/函数名称 中存储的内存地址也不同

                两个引用数据类型,比较判断,一定是 不等 的
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    uboot的mtd功能支持
    ARM920T系统总线时序分析
    NorFlash
    编译u-boot命令和u-boot常用命令
    uboot启动linux的过程
    debug(fmt,args...)调试
    APCS
    You've got to find what you love
    debian , ubuntu 截取下拉菜单
    关于bash的shellshock漏洞
  • 原文地址:https://www.cnblogs.com/ht955/p/14021895.html
Copyright © 2020-2023  润新知