Encadenamiento opcional y nullish en JavaScript
?. se detiene en null o undefined; ?? solo recurre al respaldo con esos dos.
const settings = { theme: { name: "dracula" }, limit: 0, label: "" };
console.log(settings.editor?.mode);
console.log(settings.theme?.name);
console.log(settings.missing?.deep?.value ?? "default");
console.log(settings.limit || 60); // 60: cero es falsy
console.log(settings.limit ?? 60); // 0: cero no es nullish
console.log(settings.label ?? "untitled");
const config = { retries: null };
config.retries ??= 3;
config.limit ??= 30;
console.log(config);
const maybeFn = settings.onSave;
console.log(maybeFn?.() ?? "no handler");
Cómo funciona
a?.bes undefined en lugar de un TypeError.??difiere de||: el cero y la cadena vacía se conservan.??=asigna solo cuando el valor es nullish.
Palabras clave y builtins usados aquí
const
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 537
- Tokens
- 145
- Ritmo de tres estrellas
- 80 tpm
Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 109 segundos.
Paso 4 de 5 en Vinculaciones y valores; paso 4 de 43 en Fundamentos del lenguaje.