1. JS中变量的重复声明相当于重新对变量赋值。
  2. 局部变量的优先级比全局变量的优先级高
  3. 没有使用var声明的变量都是全局变量
  4. JS中变量可以先使用后声明
  5. 两种未定义变量:一种是未定义的变量从来没有被声明过,尝试这种未经声明的变量会引起运行时错误,另一种是变量已经声明但是未赋值的变量,这样的变量有一个默认值undefined
  6. JS中有专门的垃圾回收机制
  7. JS中的解释器开始运行时,它首先要做的事情之一就是在执行任何JS代码之前,创建一个全局对象,这个对象就是一个顶级对象,而我们所说的全局变量就是顶级对象的属性(所以在任何时候属性和变量是一个概念),那么局部变量是谁的属性呢?局部变量就是调用函数(也是一个特殊的对象)的对象的属性。
  8. JS的解释器每次开始执行一个函数时,都会为那个函数创建一个执行环境,每个执行环境都有一个和它关联在一起的作用域链,这个作用域链就是对象链,在JS的顶层代码中,作用域链只有一个对象,那就是顶级对象,所有的变量都是在这一对象中查询的,在一个非嵌套的函数中,作用域链是由连个对象构成的,一个是函数的调用对象,一个是顶级对象,当函数引用一个变量时,首先检查的是调用对象,其次检查顶级对象,在嵌套函数的作用域中可以有三个或更多的对象。
posted on 2011-03-09 14:32  王长委  阅读(288)  评论(4编辑  收藏  举报