重读红宝书笔记系列( 二)

变量、作用域、内存问题

一. 基本类型和引用类型
  • 1.基本类型(Undefined,Null,Number,String,Boolean)是按值访问的,可以操作保存在变量中实际的值
  • 2.引用类型的值是保存在内存中的对象,JS不允许直接访问内存中的位置,就是说不允许直接操作对象的内存空间,引用类型实际上是在操作对象的引用( 内存地址 )而不是实际的对象
  • 3.复制变量值
    在这里插入图片描述 在这里插入图片描述
二. 检测类型
  • 1.检测一个变量是不是基本数据类型,使用 typeof 就可以,但是typeof null 会返回object,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 “object”。
  • 2.使用 instanceof 操作符可以判断一个变量(的引用)是否属于某个构造函数,在检测一个引用类型值是否属于Object时,永远返回true,因为所有引用类型的值都时Object的实例。
  • 基本类型值 instanceof 对象构造函数,返回false
var num = 2;
console.log(typeof num);  // number
console.log(num instanceof Object);  // false
var arr = [1,2,3];  
console.log(typeof arr);  // object,数组是引用类型
console.log(arr instanceof Array);  //true
console.log(arr instanceof Object);  //true
三. 全局作用域和局部作用域
  1. 全局环境只能访问全局环境中定义的变量和函数,不能向下访问 ( 局部环境 )
  2. 局部环境中的变量可以通过作用域链向上访问
  3. 在花括号 { } 或者函数内,就会开启一个局部作用域。局部变量只会在函数执行的过程中存在,在这个过程中,会为局部变量在内存上分配对应的存储空间,在函数中使用变量,直到函数结束,这个时候局部变量就没有存在的意义了,可以释放它们的内存。
四. 垃圾收集
  1. JS具有自动垃圾收集机制,就是找出使用完毕的变量,释放其占用的内存。
  • 标记清除法:当变量进入执行环境,标记为“进入环境”,变量离开环境,标记为“离开环境”,垃圾收集器收集 “离开环境”的变量
  • 引用计数法:跟踪记录每个值被引用的次数。当声明了一个变量并将一个引用类型的值赋给该变量的时候,这个值的引用为1,当值的引用为0时,可以把它占用的内存回收。
  1. 管理内存:为执行中的代码只保存必要的数据。一旦数据不再有用,手动把它的值设置为null,释放其引用 ( 解除引用 )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值