Características que ECMAScript 2020 necesita conocer (importación dinámica; operador de combinación nula; operador de cadena opcional; Promise.AllSettled)

Uno: importación dinámica

Uno de ellos es que podemos usar async / await para importar dependencias dinámicamente. Esto significa que no tenemos que importar todo primero y solo podemos importar dependencias cuando las necesitemos. Como resultado, el rendimiento de la aplicación mejora al cargar módulos en tiempo de ejecución.

Ejemplo:

if (calculations) {
    const calculator = await import('./calculator.js');
    const result = calculator.add(num1, num2);

    console.log(result);
}

En el fragmento de código anterior, puede ver que solo importamos el módulo de la calculadora cuando queremos realizar cálculos. Por lo tanto, no ralentizaremos innecesariamente la aplicación cargando todo el código antes del tiempo de ejecución. Por lo tanto, la importación dinámica es un complemento conveniente.

Dos: operador de fusión nulo

"El operador de fusión de nulos (??) es un operador lógico. Cuando su operando izquierdo es nulo o indefinido, devolverá su operando derecho; de lo contrario, devolverá su operando izquierdo.

Ejemplo:

let score = 0;
let pass = score ?? 60;

console.log(pass);//0

La diferencia entre || y ?? es que || solo devolverá el valor real. Cuando la puntuación es 0, devolverá 60, mientras que ?? es relativamente estricto.

Tres: operador de cadena opcional 

有一个嵌套多层的对象,例如:
 let obj =  {
    attr: {
        name: '王二小'
    }
 }
获取name的值 
let n_val = obj.attr.name
如果这样直接获取可能会报错,导致程序异常,所以我们需要对 obj 、attr此次验证
即: let n_val = obj && obj.attr && obj.attr.name  

El método para simplificar el código anterior es el operador de cadena opcional. El código es el siguiente:

let n_val = obj?.attr?.name

: : Promise.AllSettled

 El nuevo método Promise.allSettled () espera que se cumplan todas las promesas. Es decir, requiere un conjunto de Promesas y solo regresa cuando la promesa se cumple (rechazada o resuelta).

Ejemplo:

const promise1 = Promise.resolve(5);
const promise2 = Promise.reject("Reject promise");
const promises = [promise1, promise2];

Promise.allSettled(promises)
    .then(results => console.log(`Here are are your promises results`, results))
    .catch(err => console.log(`Catch ${err}`));

El código anterior devuelve una matriz de objetos, cada uno de los cuales representa una Promesa. Si la promesa se cumple, el objeto tiene un estado y un valor; si la promesa es rechazada, el objeto tiene un estado y una razón. Por tanto, Promise.AllSettledes muy útil cuando se quiere cumplir todas las promesas, ya sean rechazadas o cumplidas.

Cinco: variables privadas

Todo lo que necesita hacer para crear una variable privada es agregar un símbolo de almohadilla delante de la variable. Por ejemplo, #firstNamees una variable privada y no se puede acceder fuera de la clase. Intentar llamar a esta variable fuera de la clase resultará en un SyntaxError.

class Person {
  #firstName = "Catalin";
  getFirstName() 
  { 
      console.log(this.#firstName) 
   }
}

const person1 = new Person();
person1.getFirstName() // "Catalin"

console.log(person1.firstName); // Returns "undefined"
console.log(person1.#firstName); // Returns "Uncaught SyntaxError: Private field '#firstName' must be declared in an enclosing class"

En el código anterior, puede ver una variable de clase privada en funcionamiento. Al intentar firstNameacceder a variables fuera de la clase, recibimos un error. Por eso, cuando no queremos exponer datos fuera de la clase, es muy conveniente agregar.

Explicación detallada de la clase Class en ES6: https://blog.csdn.net/fu983531588/article/details/89499461

Supongo que te gusta

Origin blog.csdn.net/baidu_39043816/article/details/108578506
Recomendado
Clasificación