这三个声明有什么区别吗?
var x;
var y:Object;
var z:*;
AS 中是否存在不是对象
的东西?
最佳答案
var x;
和 var x:*;
对编译器来说意味着完全相同的东西——变量可以接受任何类型。使用 :*
而不是省略类型来增强代码的可读性。
实际上,var x:Object;
是等效的,因为正如您所指出的,所有内容都源自 Object。但是,编译器以不同的方式对待它,如果您访问非对象属性,它往往会稍微慢一些。此外,正如其他答案所指出的,尝试将 undefined
分配给对象会自动将其转换为 null
。
如果您的变量可以接受多个不相关类型的值,我建议使用 :*
,而在使用对象作为关联数组时,我建议使用 :Object
。
关于actionscript-3 - Object、* 和根本没有类型之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3389836/