Actionscript 3 AS3在尝试操作NaN时不抛出异常有什么好的理由吗?

Actionscript 3 AS3在尝试操作NaN时不抛出异常有什么好的理由吗?,actionscript-3,nan,Actionscript 3,Nan,对NaN变量的操作何时有效?我会说永远不会 但在AS3中,当尝试对此类变量执行操作时,不会引发任何异常,并返回默认值0 为什么AS3不在这里抛出异常?这很可能是出于优化目的。如果Flash必须在运行时检查每个值,那么任何数学运算都会非常缓慢。当一个值可能是NaN时,您只需要使用isNaN自己检查它,这不是一个bug 默认情况下,flash中的int和uint为0 尝试所有这些变体: var scale:Number; var resultINT:int = undefined; // still

对NaN变量的操作何时有效?我会说永远不会

但在AS3中,当尝试对此类变量执行操作时,不会引发任何异常,并返回默认值0


为什么AS3不在这里抛出异常?

这很可能是出于优化目的。如果Flash必须在运行时检查每个值,那么任何数学运算都会非常缓慢。当一个值可能是NaN时,您只需要使用
isNaN

自己检查它,这不是一个bug

默认情况下,flash中的
int
uint
为0

尝试所有这些变体:

var scale:Number;
var resultINT:int = undefined; // still 0 in the output;
var resultNUMBER:Number; // is NaN;
var resultUINT:uint;// sezo by default

trace ( this, scale, resultINT, resultNUMBER, resultUINT );

AS3在处理
NaN
时不会抛出异常,因为AS3是的方言,它反过来实现了,定义了
NaN
的用法。该标准在一系列语言和体系结构中实现,包括没有健壮异常处理的语言和体系结构
NaN
代表了一种无需异常即可表达这些值的方法,这种方法在许多平台和语言中都得到了很好的理解和记录

如果它没有按照标准实现,那么我敢打赌这里会有人问“为什么AS3会抛出和异常,而不是像其他IEEE 754浮点实现那样返回
NaN
?”

请参阅“”,以快速了解浮点数学和一般的
NaN
,并查看,您将看到该标准实际上定义了两种类型的NaN。一个安静的楠和一个信号楠

对NaN变量的操作何时有效?我会说永远不会


无意冒犯,我不认为你处于做出这种绝对陈述的最佳位置,因为老实说,很多人在他们的职业中比你聪明得多,他们对此进行了思考,并没有得出相同的结论

我知道。问题是-为什么会这样?@JonoRR,优化:意味着让代码运行得更快。=)我要改写这个问题。看起来人们更关注这个示例。如果将
int
uint
设置为
undefined
或它是
NaN
,它仍然将是0。FWIW操作在Java中对NaN始终有效,并且不会引发异常。他们总是导致NaN。人身攻击不是必要的,而是感谢;这是我一直在寻找的答案,不是人身攻击,而是柏拉图式的事实陈述。学习的第一步是承认你并不知道一切。如果你没有第一次假设在NaN上操作永远是无效的,那么谁知道呢?您可能已经找到了这些链接,以及您自己的其他链接。但至少你问了别人,这不是侮辱,除非你现在真的认为自己是这个星球上最伟大的人之一。我知道我不是,我同意。