typestar

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

  1. a?.b es undefined en lugar de un TypeError.
  2. ?? difiere de ||: el cero y la cadena vacía se conservan.
  3. ??= asigna solo cuando el valor es nullish.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 4 de 5 en Vinculaciones y valores; paso 4 de 43 en Fundamentos del lenguaje.

← Anterior Siguiente →