js的变量,作用域,内存
一,基本类型和引用类型的值
基本类型的值是按值访问的,引用类型的值是保存在内存中的对象
1,动态的属性
只有引用类型的值可以添加属性方法
不能给基本类型添加属性和方法
2,复制变量值
复制基本类型的值,两个变量参与的操作互不影响
复制引用类型的值,两个变量引用同一个对象,改变之一,会影响其二
3,传递参数
按值传递,被传递的值会被复制给一个局部变量
函数内部重写对象,这个变量引用就是一个局部对象了,这个对象会在函数执行 后消失
4,检验类型
instanceof操作符
result
= 变量 instanceof 类型
返回true或false
二,执行环境及作用域
全局环境是window对象
1,延长作用域链
try-catch语句的catch块
with语句
2,没有块级作用域
if和for语句
当中的变量声明在if和for语句结束后也依旧存在于循环外部的 执行环境中
1)声明变量
var声明的变量添加到附近最近的环境当中,未用var声明的为全局变量
2)查询标识符
搜索过程,如果在局部环境中找到了该标识符,搜索停止,变量就绪,如果 局部变量中没有找到,沿作用域继续寻找,一直追溯到全局环境的变量对
象,如果 全局变量尚没有找到,则意味着此变量尚未声明
三,垃圾收集
1,标记清除
变量进入环境时被标记进入环境,离开时被标记离开环境
2,引用计数
跟踪记录每个值被引用的次数,释放引用次数为0的值所占的内存
循环引用的时候会出现问题
3,性能问题
4,管理内存
一旦数据不在使用,将其设置为null,解除引用
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。