基础-了解作用域

来源:互联网 发布:郑伯编程 编辑:程序博客网 时间:2024/05/16 09:11

一、全局作用域

在Flash影片的跟时间轴中活在函数和类外部定义的任何对象都属于全局作用域。我们可以从任何其他作用域中访问这些对像。但是,不提倡在跟时间轴中定义对象,并且多数需要处理局部作用域。

二、局部作用域

1、类级变量和方法(静态)

定义最为广泛的局部对象时类级变量和方法,只要将其声明为public,类级变量与全局变量具有相同的作用。

2、实例级变量和方法

实例变量相对各个实例都是相互独立的。实例本身被删除时,所有实例变量都将自动从内存中释放。但是如果其他对象引用了这些变量,则它们可以保留在内存中。

3、函数级变量

函数中定义的变量可以暂时存储值,并且在函数运行结束后删除;函数的参数也认为是在函数作用域中定义。

4、块级变量

如在for循环中定义的变量等。

三、作用域链

作用域链是一种内部设备,其作用是在函数执行过程中管理变量的作用域。引用某个变量时,Flash Player将启动最近调用的函数并检查变量声明。如果没有在级别最低的局部作用域找到该变量,则向上移动一级到该函数的父函数中查找。这一过程将继续执行,直至检查到作用域链级别最高的全局作用域。

1、变量覆盖

作用链域中级别低的变量会覆盖同名的级别高的变量。

2、使用作用域

通常,应尽可能将变量定义在级别较低的局部作用域中,局部作用域利于垃圾回收,因为可以减少开销,但这并不意味在任何情况下都可盲目地使用函数变量。解决这个问题最简单的方法就是考虑变量的用途。

1)、是否固定不变:const

2)、是否全局唯一:static

3)、函数结束后是否还需要这个变量,是否需要保存对变量的修改:决定函数域变量还是实例域变量。