Hace un año me mudé de los lenguajes OO clásicos como Java a JavaScript. El siguiente código definitivamente no se recomienda (o incluso no es correcto) en Java:
if(dayNumber = getClickedDayNumber(dayInfo))
{
alert("day number found : " + dayNumber);
}
function getClickedDayNumber(dayInfo)
{
dayNumber = dayInfo.indexOf("fc-day");
if(dayNumber != -1) //substring found
{
//normally any calendar month consists of "40" days, so this will definitely pick up its day number.
return parseInt(dayInfo.substring(dayNumber+6, dayNumber+8));
}
else return false;
}
Básicamente, acabo de descubrir que puedo asignar una variable a un valor en una declaración de condición if e inmediatamente verificar el valor asignado como si fuera booleano.
Para una apuesta más segura, generalmente lo separo en dos líneas de código, primero lo asigno y luego verifico la variable, pero ahora que encontré esto, me pregunto si es una buena práctica o no a los ojos de los desarrolladores de JavaScript experimentados.
"The following code is definitely not recommended (or event not correct) in Java..."¿Es incluso correcto en JavaScript? Porque, por lo que puedo ver, devuelve un entero (return parseInt(...)) sidayNumber != -1es verdadero, pero un booleano si es falso.