Tengo un objeto de errors de JavaScript que estoy usando en un componente web Lightning de Salesforce en un componente de tabla listo para usar llamado tabla de datos. No entraré en todos los detalles de cómo se usa, pero para los propósitos de mi pregunta, los errors pueden ser nulos o pueden tener una propiedad de rows (que en sí misma es un objeto, que se usa para errores de nivel de fila), y también puede tener una propiedad de table (también un objeto, usado para errores a nivel de tabla).
Aquí hay algunos valores posibles de errors :
errors = null; errors = { rows: { ... } } errors = { table: { ... } } errors = { rows: { ... }, table: { ... } } Al configurar un error de nivel de tabla, no quiero simplemente decir errors = { table: {...}} porque entonces puedo estar anulando algunos errores de nivel de fila. Así es como lo estoy codificando actualmente:
if (errors === null) { errors = { table: {} }; } else { errors.table = {}; } errors.table.title = 'You must select at least one item to be returned.';¿Hay una forma más concisa de hacer esto?
No necesitas otra else :
errors = errors || {}; errors.table = errors.table || {}; En entornos JavaScript modernos, es mejor usar ?? (operador coalescente):
errors = errors ?? {}; errors.table = errors.table ?? {};Y puede ser aún más corto:
errors ??= {}; errors.table ??= {}; En tu caso no hay mucha diferencia, pero || realiza una prueba de "veracidad" de la vieja escuela sobre el valor, mientras que ?? solo busca null e undefined .
Hablando de eso, en la mayoría de las circunstancias cuando se compara con null , prefiero usar == sobre === porque con == tanto null como undefined se consideran lo mismo. Es algo frágil distinguir explícitamente entre los dos en la mayoría de las situaciones de codificación.