value = value ? value : null; Quiero establecer el value en null si no está undefined . Además de lo que ya he escrito, ¿qué más puedo hacer con menos repeticiones y más limpieza?
?? ) Puede usar el operador coalescente nulo , que es un "[...] operador lógico que devuelve su operando del lado derecho cuando su operando del lado izquierdo es null o undefined , y de lo contrario devuelve su operando del lado izquierdo" :
value = value ?? null; Esto se adapta mejor a sus requisitos para asignar null cuando el value no está undefined . En combinación con la asignación, esto se puede hacer aún más conciso usando el operador de asignación lógico nulo ( ??= ):
value ??= null;Esto debería cumplir con todos sus requisitos, pero también veamos algunas posibles alternativas:
|| ) Otra alternativa podría ser el || operador:
value = value || null;O en su forma de asignación :
value ||= null; La diferencia aquí es que se asignará null para cualquier valor falso , incluidos 0 , false y '' .
?: )Esta es la implementación original de su pregunta:
value = value ? value : null; Esencialmente, esto presenta el mismo problema que la implementación del operador lógico OR en el sentido de que se asignará un valor null a cualquier valor falso . En este caso, sin embargo, esto se puede mitigar al incluir una comparación más estricta en la condición ternaria (haciéndola aún más detallada):
value = value != null ? value : null;undefined , null , 0 , Nan y '' se consideran declaraciones falsas , por lo que si desea asegurarse de actualizar su variable solo si tiene un valor undefined , debería considerar usar una declaración if como esta if(value==undefined) value =null;