我开始学习Flex和ActionScript,并遇到了有趣的陈述:无类型变量。那是:
var x:*;
要不就
var x;
我发现它们可以保存
undefined
值。 Object
类型的变量不能。但是我不明白他们的目的。我认为没有人经常需要区分undefined
和null
值-这些变量可以实现什么。尽管在ActionScript 2中没有未类型化的变量,这似乎同样有可能。变量x
在语句Object
中被视为var x;
,并且Object
变量可以带有undefined
值。那么这些“真正无类型”变量的原理是什么?为什么将它们引入语言?
最佳答案
对于您的问题的简单回答是,ActionScript3的规范基于ECMAScript第四版修订建议草案,而这些草案指定可以不键入数据。因此,AS3允许取消键入数据。至于基本原理,我想说的几乎是某种组合,即允许与ECMA-3代码向后兼容,以及习惯于版本3的可选类型的程序员的可访问性。但是,只有ECMA草案的作者才能回答该问题,并且它与您的要求有些正交。
无论如何,为什么ActionScript3包含无类型变量的答案是它基于包含无类型变量的提议。我不知道这里的其他答案来自何处,特别是那些暗示此功能是为了使AS2程序员或尚未准备好使用“真正语言”的人们感到舒适的答案。如果Macromedia / Adobe在任何给定功能上都偏离了ECMA建议,则可以合理地假设它们是出于此类原因而这样做的,但是有问题的功能是根据建议实施的。