UPD(来自我的评论):选择一些幻数来表示值缺失当然不是一个好习惯,除非您可以完全确定这个幻数不会作为某些算术的结果出现(这通常是正确的)。因此,这里最好的方法是使用比int
(eg Number
) 更宽的类型,或者将一些标志 ( Boolean
value) 传递给函数,以及int
,以指示实际值不存在。选择应该取决于您是否要强调传递值是不可分割的事实的重要性。
如果您对扩展参数类型感到满意,那么您应该使用NaN
并执行以下操作:
function setMyValue (myVar : Number = NaN) : void
{
if ( isNaN(myVar) )
{
/* Generate a value for myVar */
}
else
{
/* Use the supplied value for myVar */
}
}
这在技术上更准确,也更稳定。它还允许您在编译时进行强类型输入,并且不会像使用Object
.
int
请注意,正如其中一个答案所暗示的那样,这将不起作用。int
只有数值,并且会被强制为 0。您需要使用type .NaN
Number
如果您担心性能 - 不要担心。使用Number
代替int
或uint
通常是可以的。
UPD:如果您想明确标记该参数应该是完整的,只需使用附加标志和确切类型 - 它会更清晰。
function setMyValue (isIntValueSupplied : Boolean = false, intValue : int = 0) : void
{
if ( isIntValueSupplied )
{
/* Generate or use a default value of intValue */
}
else
{
/* Use the supplied value for intValue */
}
}
另一种选择是使用附加值定义您自己的类型,例如MaybeInt
,它包含整数值和一个标志(无论它是否实际初始化)。这样你就会清楚地表明 value 应该是 integer 或no-value。但是,这种方法可能有点笨重。