js的乐趣:关于栈和堆得理解

1、谈到栈和堆必要知道JavaScript中的基本类型和引用类型

 function show-type(x) {
        console.log(typeof(x));                                           // undefined 值类型
        console.log(typeof(10));                                       // number 值类型
        console.log(typeof('abc'));                                   // string 值类型
        console.log(typeof(true));                                           // Boolean 值类型
        console.log(typeof(function () { }));                          //函数 引用类型
        console.log(typeof([1, 'a', true]));                            //数组  引用类型
        console.log(typeof ({ a: 10, b: 20 }));                        //object 或者json  引用类型
        console.log(typeof (null));                                         //null  引用类型
        console.log(typeof (new Number(10)));                      //内置对象 引用类型
    }

    show-type();

基本类型(值类型):undefined、number、string、布尔类型、null类型

           1.占用空间固定,保存在栈中,当每个方法执行的是,会建立自己内存栈区用来储存内部定义的变量,当方法执行完毕之后便销毁该内存栈区,以减少内存占用过多。其储存的是一些基础变量和一些对象的引用变量(例如:var obj1 = {},中的obj1则储存在栈区,而{}储存在堆区。在下图已经展示),而引用变量存储在栈中的是指向堆中的数组或者对象的地址

            2.使用typeof检测数据的类型

引用类型:对象、函数、数组

             1.占用空间固定,保存在堆中,每一个对象(var obj1 = {})、数组(arr[])等方法执行完后,不会销毁,而是将引用类型会保存在内存堆区,以便调用(因为引用一般比较重要,且引用的次数较多,成本也大),只有当没有任何一个变量引用该对象时,才会利用回收机制来清除该对象

          2.使用instanceof检测数据类型

var a=3;
var b=3;
var obj1={title:'前端',content:'哈哈'}


2、上面提到的栈和堆到底是什么呢?!!!

举个小例子:咱们的word文档(数据),会放在u盘中(内存)

然而变量存在电脑中时,会产生内存,且内存会产生两片区域,一个栈区(储存基本类型),一个堆区(储存引用类型)

1. 栈是:用来保存 基本类型(也叫值类型:null、string、number等),栈的数据是可以共享的,比如定义一个变量      

        存在栈中的数据大小与生存期必须是确定的。可以明确知道每个区块的大小,因此,stack的寻址速度要快于heap。

2.堆:用来保存引用类型(对象、函数、数组)

         其用于复杂数据类型(引用类型)分配空间,例如数组对象、object对象;它是运行时动态分配内存的,因此存取速度较慢

注意注意!!敲小黑板!!!

可以通俗的理解:

栈是点击自动洗衣机的按钮(发送至指令)

堆就是自己动手洗





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值