-
AS3中函数语句和函数表达式定义的不同
普通类 -
- 支持
- 批判
- 提问
- 解释
- 补充
- 删除
-
-
函数语句和函数表达式定义的不同
1、在定义位置上,函数语句定义法定义的函数在编译时会被提升到最前面,而函数表达式定义法只能先定义再使用,只有定义后面的语句才可以成功调用。
2、函数语句定义法和函数表达式定义法还体现在函数体this关键字的记忆上。使用函数语句定义法,则this关键字牢牢指向当前函数定义的域;而若使用函数表达式定义法,则随着函数附着的对象不同,this关键字也随之改变。
3、在内存管理和垃圾回收方面也有不同。因为,函数表达式不像对象那样独立存在,它相当于一个匿名函数。当持有这个函数引用的数组或对象脱离作用域或由于其他原因不再使用,那么将没有任何方法再访问该匿名函数。此时,这匿名函数对象引用计数为零,符合垃圾回收条件,这意味着可能被回收。
4、本质上有差别,函数语句定义法定义的函数类型是一个内置的MethodClosure类对象,而这个类不是动态类,因此一些高级函数技巧不能用于使用函数语句定义法定义的函数;而使用表达式定义法定义的函数类型不再是MethodClosure,而是一个Function-1类型,它是编译时生成的Function子类,如果多使用函数表达式定义法定义几个函数对象,那么编译时会生成Function-2,Function-3等新的子类,这些子类和MethodClosure不同,都是动态类,因此,可以使用高级函数运用技巧。 -
-
- 标签:
- AS3
- 使用
- 对象
- 定义
- 表达式
- 学习元
- 函数
- 语句
-
加入的知识群:
学习元评论 (0条)
聪明如你,不妨在这 发表你的看法与心得 ~