UPD (de mi comentario): Ciertamente, no es una buena práctica para recoger algunas número mágico para indicar el valor ausencia, a menos que pueda estar completamente seguro de que este número mágico no aparecería como consecuencia de alguna aritmética (que generalmente es verdad). Entonces, el mejor enfoque aquí es usar un tipo más ancho que int
(por ejemplo, Number
), o pasar un indicador (valor Boolean
) para funcionar, así como int
, para indicar la ausencia del valor real. La elección debe depender de si desea enfatizar la importancia del hecho de que el valor pasado es integral.
Si se siente cómodo con la expansión de tipo de argumento, entonces debe usar NaN
y hace esto:
function setMyValue (myVar : Number = NaN) : void
{
if (isNaN(myVar))
{
/* Generate a value for myVar */
}
else
{
/* Use the supplied value for myVar */
}
}
Eso es tanto más técnicamente precisa y también es más estable. También le permitirá escribir fuertemente en tiempo de compilación y no causar errores extraños como en el caso de usar Object
.
Tenga en cuenta que esto no funcionará con int
como sugiere una de las respuestas. int
tiene solo valores numéricos, y NaN
se verá forzado a 0. Tendrá que utilizar el tipo Number
.
Si le preocupa el rendimiento, no lo haga. El uso de Number
en lugar de int
o uint
es generalmente correcto.
UPD: Si desea marcan explícitamente que el argumento debe ser integral sólo tiene que utilizar la bandera adicional y el tipo exacto - que sería mucho más claro.
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 */
}
}
Otra opción es definir su propio tipo con un valor adicional, por ejemplo, MaybeInt
, que contiene un valor entero y un indicador (si fue realmente inicializado o no). De esa forma, usted indicará claramente que el valor debe ser integral o sin valor. Sin embargo, este enfoque puede ser un poco voluminoso.
Ah, OK, número es ligeramente diferente. El número predeterminado es NaN, por lo que esa instancia se puede manejar con isNaN (myVar). Sin embargo, quiero resolver para int y uint. – Wikiup