Tengo un ejemplo similar a este donde la primera expresión se evalúa como falsa y la segunda no está definida pero la expresión general devuelve indefinida en valueResult, ¿no debería el primer valor falso terminar la verificación y devolver falso?
valueResult = false && 10 === 5 ? 'match' : undefinedHe agregado instrucciones de registro de la consola y un depurador y esto es lo que está sucediendo, sin embargo, cuando hago falso && indefinido en la consola del navegador, devuelve falso.
El operador && tiene mayor precedencia que el operador ternario. Es por eso que sucede lo siguiente:
Básicamente, tiene un operador ternario (false && (10 === 5) ? : 'match' : undefined . 10 === 5 se evalúa como falso y false && false también da como resultado falso. Es por eso que indefinido y no 'coincidencia' es devuelto
Para arreglar esto, agregue paréntesis después de && así:
false && (10 === 5 ? 'match' : undefined)En su ejemplo actualizado, el AND lógico … && … tiene un orden de precedencia más alto (5) que la evaluación del ternario … ? … : … (3).
Consulte la tabla en MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#table