JavaScript | Enstringmiento opcional

El enstringmiento opcional ‘?.’ es una forma a prueba de errores de acceder a las propiedades de los objetos anidados, incluso si no existe una propiedad intermedia. Fue presentado recientemente por ECMA International, Comité Técnico 39 – ECMAScript, que fue escrito por Claude Pache, Gabriel Isenberg, Daniel Rosenwasser, Dustin Savery. Funciona de manera similar al enstringmiento ‘.’ excepto que no informa el error, sino que devuelve un valor que no está definido. También funciona con llamadas a funciones cuando intentamos hacer una llamada a un método que puede no existir.

Cuando queremos verificar un valor de la propiedad que se encuentra en lo profundo de una estructura similar a un árbol, a menudo tenemos que verificar si existen Nodes intermedios.

let Value = user.dog && user.dog.name;

El operador de enstringmiento opcional permite que un desarrollador maneje muchos de esos casos sin repetirse y/o asignar resultados intermedios en variables temporales:

let Value = user.dog?.name;

Sintaxis: 

obj?.prop
obj?.[expr]
arr?.[index]
func?.(args)

Nota: Si este código da algún error, intente ejecutarlo en el editor de JavaScript en línea.

Ejemplo: Enstringmiento opcional con objeto

Javascript

const user = {
  dog: {
    name: "Alex"
  }
};
 
console.log(user.cat?.name); //undefined
console.log(user.dog?.name); //Alex
console.log(user.cat.name);

Producción:

Ejemplo: Enstringmiento opcional con llamada de función

Javascript

let user1 = () => console.log("Alex");
let user2 = {
  dog(){
    console.log("I am Alex");
  }
}
let user3 = {};
 
user1?.();       // Alex
user2.dog?.();   // I am Alex
user3.dog();     // ERROR - Uncaught TypeError:
                 // user3.dog is not a function.
user3.dog?.();   // Will not generate any error.

Producción:

Publicación traducida automáticamente

Artículo escrito por abhishekkharmale y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *