JavaScript笔记二:变量、作用域和内存

1、基本类型和引用类型
  基本类型:简单的数据段
  引用类型:可能由多个值构成的对象,只能给引用类型添加属性

当复制他们的值时,基本类型实际上是又开辟了独立的空间存储值,而引用类型则是创建了指针,他们关联到同一个对象

2、执行环境和作用域

延长作用域链,没有块级作用域
3、确定一个值是哪种基本类型可以使用typeof操作符,而确定一个值是哪种引用类型可以使用instanceof操作符。
4、所有变量(基本和引用)都存在一个执行环境当中,这个执行环境决定了变量的生命周期,以及哪一部分代码可以访问其中的变量:
执行环境有全局执行环境和函数执行环境之分
每次进入一个新的执行环境,都会创建一个用于搜索变量和函数的作用域链
函数的局部环境不仅有权访问函数作用域中的变量而且有权访问父环境甚至全局环境
全局环境只能访问全局变量和函数而不能直接访问局部环境的任何数据
5、JavaScript是一门具有自动垃圾收集机制的编程语言
离开作用域的值将被自动标记为可以回收,将被删除
“标记清除”是目前流行的垃圾收集算法,思想是给当前不是用的值加上标记,然后再回收其内存
另一种垃圾收集算法是“引用计数”,思想是跟踪记录所有值被引用的次数,JavaScript引擎目前不使用这种算法,但在IE中访问非原生JavaScript对象(DOM元素)时,这种算法仍然会导致问题
当代码中存在循环引用时,“引用计数”就会出现问题
解除变量的引用不仅可以消除循环引用的现象,而且对垃圾收集也有好处,应该及时解除不再使用的全局对象属性以及循环引用变量的引用。
   
    

你可能感兴趣的:(JavaScript,javascript引擎)