我开始学习Flex和ActionScript,并遇到了有趣的陈述:无类型变量。那是:

var x:*;


要不就

var x;


我发现它们可以保存undefined值。 Object类型的变量不能。但是我不明白他们的目的。我认为没有人经常需要区分undefinednull值-这些变量可以实现什么。尽管在ActionScript 2中没有未类型化的变量,这似乎同样有可能。变量x在语句Object中被视为var x;,并且Object变量可以带有undefined值。

那么这些“真正无类型”变量的原理是什么?为什么将它们引入语言?

最佳答案

对于您的问题的简单回答是,ActionScript3的规范基于ECMAScript第四版修订建议草案,而这些草案指定可以不键入数据。因此,AS3允许取消键入数据。至于基本原理,我想说的几乎是某种组合,即允许与ECMA-3代码向后兼容,以及习惯于版本3的可选类型的程序员的可访问性。但是,只有ECMA草案的作者才能回答该问题,并且它与您的要求有些正交。

无论如何,为什么ActionScript3包含无类型变量的答案是它基于包含无类型变量的提议。我不知道这里的其他答案来自何处,特别是那些暗示此功能是为了使AS2程序员或尚未准备好使用“真正语言”的人们感到舒适的答案。如果Macromedia / Adob​​e在任何给定功能上都偏离了ECMA建议,则可以合理地假设它们是出于此类原因而这样做的,但是有问题的功能是根据建议实施的。

07-24 14:38