FlashActionScript3.0关于作用域的详细讲解.docVIP

  • 2
  • 0
  • 约小于1千字
  • 约 5页
  • 2017-06-12 发布于北京
  • 举报

FlashActionScript3.0关于作用域的详细讲解.doc

关于作用域的详细讲解 接下来我们来讲一下作用域的问题,作用域在英文里面叫scope。那它呢本身是指变量和函数能够被访问和调用的范围。作用域一般是由代码所在的位置决定的,决定了它可以被执行的范围。实际上很多初学者对作用域不是很了解,很容易在作用域外去访问或者调用函数,这样做的结果通常就是找不到要访问的变量,或提示函数未定义。 我们来看一个比较明显的例子。注意在这个代码段当中呢,我首先定义了一个function A。这个A呢,在具体实现当中是定义一个小写a的Number类型的一个变量,并且为它赋值100。我在执行当中呢,我首先执行了一下A,然后trace(a);追踪一下。大家注意,访问的属性a未定义。这是为什么呢?这是因为a存在的作用域是在函数当中的,也就是在A当中的。如果我在A之外去访问它,本身是超出它的作用域的,那这个时候是无法访问到a变量的。 如果我们在域内访问它。我们trace(a);放到A函数里边去,它本身就进入到了函数A的作用域当中了。这个时候能不能访问到它呢?大家注意,这个时候输出面板里已经输出100,这时候呢实际上是可以访问到a的。 如果我就希望在函数作用域之外来访问到a,我应该怎么做呢?我应该把a变量的声明放在函数作用域之外,也就是放在一个更高的作用域里面。比如说,我先声明a是一个Number类型的变量,然后再在A中对a进行赋值。这个时候,函数A里面的a已经是在函数外声明了的。然后,我们在函数外面trace(a);来追踪一下。大家可以发现,输出面板同样输出了100。 那大家也就都清楚了,为什么我们一般在类包当中要提前先声明变量。我先声明变量时为了它的作用域能够影响到其它所有的方法。如果我在某个函数内部声明了变量,它所在的作用域就在这个函数当中。 我们做一个比较形象的例子。大家可以看到,下面是一个标准的类包。package下面是一级权限,class下面是二级权限,如果它有一个function那就是三级权限,function内部再嵌套一个新的函数它就是四级权限。一级、二级、三级、四级,它的作用范围是从大到小的,大家一定要引起足够的注意。

文档评论(0)

1亿VIP精品文档

相关文档