[as3]变量的作用域
本文主要包含:1、什么是作用域;2、全局变量和局部变量;3、块级作用域
变量的作用域是指可以使用(或者说是引用)该变量的有效范围。一般来说,变量按作用域不同分为全局变量和局部变量。在任何函数和类之外定义的变量是全局变量,而在类和函数内定义的变量是局部变量。
全局变量也就是能在代码的任何地方都可使用的变量,而局部变量只能在定义它的类或函数内使用。这样可能遇到的一个问题是,如果定义的全局变量和在某个函数内定义的局部变量名字一样的时候,会产生什么影响?这时,在局部变量的作用域内,局部变量会屏蔽全局变量!
另外一个是关于块级作用域,块级作用域指的是{}之内的代码。在C++和Java中都用块级作用域的限制,也就是说在代码块内的定义的变量的作用域仅限于改代码块。但是ActionScript并无此限制!不但如此,有趣的一点是,ActionScript中还存在一种名为“提升”的方法,编译器会自动把变量定义的语句移到函数顶部!也就是说在函数内,你可以先使用某个变量,哪怕是在函数结束前一行再定义它也是可以的,比如下面的语句
- function onlyTest() {
- trace(sss);
- sss = 11;
- trace(sss);
- var sss:Number = 10;
- trace(sss);
- }
- onlyTest();
执行该代码的结果是:
- NaN
- 11
- 10
可以看到虽然是在后面才定义的sss,但是之前的trace是有效的。

7月 28th, 2007 at 4:50 下午
1. function onlyTest() {
2. trace(sss);
3. sss = 11;
4. trace(sss);
5. var sss:Number = 10;
6. trace(sss);
7. }
8. onlyTest();