let products; if (products?.length !== 0) { console.log('true') }contra
let products; if (products && products.length !== 0) { console.log('true') }Si no hay una matriz de productos, el ejemplo 1 aún ejecutará la instrucción if. ¿No debería el encadenamiento opcional verificar si el producto existe, luego verificar la longitud y finalmente verificar la longitud en 0?
Ejemplo. 2 no se ejecutará si el producto no existe.
El encadenamiento opcional no tiene prioridad sobre la comparación. Este
if (products?.length !== 0) {es
if ((products?.length) !== 0) { Evalúa la cadena, luego compara el resultado con 0. Si hubo un valor al final de la cadena, se comparará. Si la cadena falla debido a que algo es nulo, se evaluará como undefined y se comparará con 0.
if ((undefined) !== 0) {que siempre será cierto.
Como desea que el bloque se ejecute si los products existen y no están vacíos, use
if (products?.length) {