一,基本类型和引用类型的值
基本类型的值是按值访问的,引用类型的值是保存在内存中的对象
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,解除引用
相关文章
- 03-30python变量作用域
- 03-30java 中局部变量在栈内存中的复制
- 03-30对于(function(){}())和function(){}实例的作用域分析(里面有很多问题……)
- 03-30JS函数、arguments、作用域
- 03-30python 函数的名称空间及作用域
- 03-30go语言基础之不同作用域同名变量
- 03-30条款10.优先使用限定作用域的枚举类型,而非不限定作用域的枚举类型
- 03-30Golang中的append是否会帮助nil类型的变量分配内存?
- 03-30js 数组方法的作用,各方法是否改变原有的数组
- 03-30python学习Day12 函数的默认值、三元表达式、函数对象(函数名)的应用场景、名称空间与作用域