J高三-第四章学习笔记

  • 引用类型
    js不能直接操作对象的内存空间,操作对象实际是在操作对象的引用,引用类型的值是按引用访问的
    基本类型不能添加属性

  • 复制变量值
    基本类型赋值会对值进行复制,引用类型赋值会对引用进行复制

  • 函数的参数传递
    基本类型会复制值传递,引用类型会复制引用传递
    修改基本类型的值不会改变原始对象,访问引用类型的值并修改其属性会影响原始对象
    函数中给形参赋值,不会影响原始的引用

  • 类型检测
    typeof检测字符串数字布尔undefined类型是最佳工具,正则对象和null会返回object
    instanceof用于检测引用类型

  • 执行环境
    分为全局环境和执行环境
    每次进入函数执行环境会将将其推入环境栈,退出函数时将其环境弹出
    每次进入环境会创建变量对象的作用域链,第一环为全局环境,最后一环为当前执行环境
    函数作用域实际是活动对象,最开始只保存arguments一个对象,在全局作用域不存在
    标识符查找是从作用域链末端到首端逐级向上查找
    with语句和try-catch语句可以延长作用域链
    局部作用域变量访问速度快于全局作用域的问题在IE9已经修复了
    es5没有块级作用域,if语句,大括号,for循环中循环变量都可以在语句结束后访问
    不用var声明的变量直接复制会添加到全局环境

  • GC
    原理:找出不使用的变量,释放其内存

  • 标记清除:
    给所有内存中变量加标记,去掉环境变量以及环境变量引用的变量的标记,然后清除有标记的变量

  • 引用计数:
    引用类型值每次赋值给变量时引用次数加1,包含对这个值的引用的变量取得另外的值时引用次数减1
    清除引用次数为0的值
    引用计数的异常情况:
    两个对象都的属性循环引用
    BOM和DOM对象在IE9以前未被转化为真正的js对象,当时js对象和这些COM(组件对象模型)对象相互引用

  • 触发GC:
    window.collectGarbage()

  • 管理内存:
    复制null解除引用,适合大多数全局变量和全局对象的属性,局部变量会再离开执行环境时自动解除引用
    解除引用只能让值脱离执行环境,使其在下次GC时被回收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值