变量和垃圾回收机制

变量分成两种类型的值,为基本数据类型和引用数据类型。

基本数据类型: number、null、undefined、string、symbol、bigint

引用数据类型:object

其中 symbol为es6新增,是一个原始数据类型,通过symbol函数生成

        const title = Symbol();
        const obj = {
            [title]: '123'
        }

BigInt数据类型的目的是比Number数据类型支持的范围更大的整数值,BigInt 只用来表示整数,没有位数的限制,任何位数的整数都可以精确表示

如果创建BigInt,需要在整数的末尾加上n,或者使用BigInt()构造函数。

        console.log(1234567888888886);     //  1234567888888886
        console.log(1234567888888886n);    // 1234567888888886n
        let a = BigInt("1234567888888886");    //  1234567888888886n    

基本类型值在内存中有固定大小的空间,所以是在栈中;当一变量对另一基本变量复制值时,是创建这个值的副本;

引用类型的值是对象,所以保存在堆中;当一变量对另一基本变量复制值时,复制的指针,因为两个变量最终都是指向同一对象;

 

js中有自动的垃圾回收机制,他的原理是找到不再继续使用的变量,然后释放其占用内存。

比如局部变量是跟随函数的执行而存在,当函数结束便没有存在的必要,此时就可回收占用的内存空间,所以它是一个周期性地操作。

垃圾回收方法;

  1. 标记清除:会给存储在内存中的变量都打上标记,然后将目前在环境中或在使用的变量再打上一个标记,剩下的就为准备回收的变量;
  2. 引用计数:跟踪记录每个值被引用的次数,当引用次数为0时,就会回收占用的内存空间。

 

 

 

 

 

posted @ 2020-03-08 20:22  阿软妹  阅读(246)  评论(0编辑  收藏  举报