Estoy seguro de que se trata de un duplicado, pero no puedo encontrar la pregunta original, así que por favor vincúlela si la conoce.
En Javascript, actualmente estoy escribiendo una función y tengo la tentación de escribirla así:
function toggleDropdown() { isOpen() ? closeDropdown() : openDropdown(); } Sin embargo, esto se siente un poco extraño, ya que el operador ternario es una expresión, y ni closeDropdown ni openDropdown devuelven valores (salvo un indefinido implícito), y no estoy asignando el valor de retorno del ternario a nada.
Esto me di cuenta de que Javascript parece permitirle calcular arbitrariamente y tener expresiones no asignadas a nada. Por ejemplo, aparentemente este código a continuación no arroja ningún error:
function test() { 55; "asdf"; let x = 12; "qwer"; 12; }¿Cuál me parece un poco extraño? Me pregunto, ¿este código está "bien" para escribir? No parece arrojar ningún error, pero me preocupa que se rompa durante algún tipo de paso de compilación con Babel o algo así, ya que este código parece un poco poco ortodoxo. ¿O tal vez es completamente compatible?
Está todo bien. No tiene que hacer nada con el resultado de una expresión.
Realmente no es diferente a llamar a una función que devuelve un valor y no asignar o usar el valor.
En el caso de los valores primarios, lo más probable es que se optimicen si estuviera optimizando su código.
Dicho esto, es posible que tenga un linter configurado para emitir una advertencia o un error para una expresión no asignada, por lo que su sintaxis válida se mostraría como un problema en ese caso.