我在某处看到了以下声明 -
var someVariable:*;
为什么someVariable声明为*(星)类型?用这种方式声明它有什么用?
*
和之间的实际区别Object
是*
可以undefined
而Object
不是.
文档有这样的说法:
指定属性是无类型的.对样本注释使用星号符号等同于不使用类型注释.从非类型化属性读取的表达式被视为无类型表达式.在以下情况下,建议使用无类型表达式或属性:
如果要将类型检查推迟到运行时.您可以使用无类型属性或表达式来规避严格模式下的编译时类型检查.但请注意,无论是否使用严格模式,都会发生赋值语句的运行时类型检查.
如果要将值undefined存储在属性中.与以前版本的ActionScript不同,值undefined不是Object数据类型的成员.必须使用无类型属性来存储未定义的值.