¿Estoy tratando de usar el operador lógico AND && y Nullish coalescing ?? operadores para la representación condicional de variables/valores. Pero por alguna razón, no tengo claro el uso de estos dos operadores y cómo funcionan.
Explique la diferencia entre ambos y cuándo debemos usar cualquiera de ellos en lugar de la declaración if .
/* -------------------- ?? operator -------------------- */ const foo = null ?? '?? default string'; console.log(foo); const baz = 0 ?? 10; console.log(baz); /* -------------------- && operator -------------------- */ const foo_1 = null && '&& default string'; console.log(foo_1); const baz_1 = 0 && 20; console.log(baz_1);&& - significa Y.
?? - operador que simplemente devuelve la expresión del lado derecho cuando la expresión del lado izquierdo es nula o indefinida.
Por ejemplo
if(someValue && otherValue) { //if someValue is true AND otherValue is true }?? también se conoce como operador coalescente nulo. Es un operador que simplemente devuelve la expresión del lado derecho cuando la expresión del lado izquierdo es nula o indefinida.
let foo = someValue ?? "default value"; // when someValue is null assing default (right hand) value to variable foo.Para ver la diferencia y determinar cuándo usar un operador u otro, puedes hacer una tabla como esta:
| || | && | ?? | --------------------+---------+---------+---------+ 0, 'default' |'default'| 0 | 0 | '', 'default' |'default'| '' | '' | false, 'default' |'default'| false | false | true, 'default' | true |'default'| true | 20, 'default' | 20 |'default'| 20 | null, 'default' |'default'| null |'default'| undefined, 'default' |'default'|undefined|'default'|¿El operador coalescente nulo ?? distingue entre valores nulos (nulo, indefinido) donde como el operador OR || o el operador AND && busca valores falsos que incluyen contener "" 0 false null undefined
var x = ''; console.log(x ?? "default"); // '' console.log(true && x); // '' var y; // undefined console.log(y ?? "default"); // 'default' console.log(true && y); // undefined