Рубрики
Без рубрики

8 функций от ES2020/ES11 вы должны знать!

Спецификации ES2020 или ES11 были завершены в начале этого года. Он представил немало новых функций, и мы … отмечены JavaScript, Beginters, Codenewbie, 100daysOfCode.

Спецификации ES2020 или ES11 были завершены в начале этого года. Он представил довольно много новых функций, и мы рассмотрим восемь ключевых основных моментов из нового стандарта.

Динамический импорт

Babel и Webpack позволяют нам импортировать файлы JS в качестве модулей в наше приложение условно. Динамический импорт в настоящее время поддерживается. Эта функция была принята для улучшения разделения кода в JavaScript и запроса кода по требованию (позволяя ленивую загрузку).

Пример:

Допустим, у вас есть модуль приветствия, который принимает имя и отображает приветствие для этого имени.

export const greeting = (name) => console.log(`Hello ${name}`);

Вы можете импортировать это условно в свое приложение.

const time = "morning"; // this is dynamically set to the time of day, hardcoded for example

if (time === "morning") {
    const say = await import("./greeting.js");
    say.greeting("Parwinder"); // Hello Parwinder
}

Частные переменные класса

У меня есть Выделенное сообщение в блоге На классе, где я говорю о частных переменных и методах. На данный момент приведем пример:

class ObjectCreator {
    #meaningOfLife;

    constructor(name) {
        this.#meaningOfLife = 42;
    }

    returnMeaningOfLife() {
        return this.#meaningOfLife;
    }

    #returnAMessage() {
        return "You will do great things in life";
    }
}

const myObject = new ObjectCreator("Parwinder");
console.log(myObject.returnMeaningOfLife()); // 42
console.log(myObject["#meaningOfLife"]); // undefined
console.log(myObject.#meaningOfLife); // SyntaxError
console.log(myObject.#returnAMessage); // SyntaxError

Язык обеспечивает соблюдение инкапсуляции. Это синтаксическая ошибка для обозначения # имен из Out Off Scope. Государственные и частные области не конфликтуют. Мы можем иметь как частные области #meaningoflife, так и общественные области значения в одном классе.

Дополнительная цепочка

Проверьте Дополнительная цепочка для концепции подробно. Доступ к свойствам объекта является распространенным явлением в JavaScript. Много раз эти свойства вложены. Когда вы получаете доступ к свойству на объекте, где объект отсутствует, JavaScript бросает ошибку.

? Оператор короткие цирки оценка свойства объекта. Вместо того, чтобы вернуть ошибку, продолжая оценку, необязательные цепочки прекращаются, как только она находит первый неопределенный/нулевой в цепочке и возвращает неопределенное Анкет

const myObject = {
    name: "Parwinder",
    car: "Cybertruck",
    age: 42,
    computers: {
        first: {
            name: "iMac",
            year: 2017,
            spec: {
                cpu: "i7",
                ram: "16GB"
            }
        },
        second: {
            name: "MacBook Pro"
        }
    }
}

console.log(myObject.computers.first.spec.cpu); // i7
console.log(myObject.computers.second.spec.cpu); // Cannot read property 'cpu' of undefined

Мы можем обратиться к ошибке доступа ЦП с помощью дополнительной цепочки.

myObject?.computers?.second?.spec?.cpu // undefined

// Concise and easy to read code
// or

myObject.computers.second.spec?.cpu

Обещание. Все

ES2020 или ES11 введены Обещание. AllSettled Так что это довольно новый и должен использоваться с осторожностью Анкет Проверьте браузеры, которые вы планируете поддержать.

AllSettled Возвращает обещание, когда все обещания, предоставленные ему, либо разрешены, либо отклоняются. Возврат – это массив объектов, где каждый объект описывает результат входных обещаний.

AllSettled и Обещание. Все иметь незначительную разницу.

Обещание. Все отвергает с первым отказом от любого из обещаний, данных в качестве входных данных. Поэтому, если мы предоставим пять обещаний обещание. Все и двое из них терпят неудачу, Обещание. Все откажется от результата самой первой неудачи.

Обещание. AllSettled С другой стороны, будет ждать, пока все обещания завершит и предоставит результат каждого обещания, предоставленного в качестве входного материала (будь то разрешенное или отклоненное). Используйте обещание. Все Когда асинхронные обещания не зависят друг от друга, и вы можете повторить только те, которые потерпели неудачу. Если ваш курс действия зависит от всех асинхронных задач, выполняющихся успешно, прежде чем двигаться дальше, используйте Обещание. Все Анкет

const promise1 = Promise.resolve("Parwinder");
const promise2 = new Promise((resolve) => {
    setTimeout(() => {
        resolve("Lauren");
    }, 2000);
});
const promise3 = Promise.reject("Robert");
const promise4 = Promise.resolve("Eliu");

Promise.allSettled([promise1, promise2, promise3, promise4]).then((data) => {
    console.log(data);
});

Как только все четыре обещания выше решают/отвергнут, AllSettled передаст результат обратном вызове в тогда . Журнал будет выводить:

[{
  status: "fulfilled",
  value: "Parwinder"
}, {
  status: "fulfilled",
  value: "Lauren"
}, {
  reason: "Robert",
  status: "rejected"
}, {
  status: "fulfilled",
  value: "Eliu"
}]

Я покрыл Allsettled и любой в прошлом. Прочитайте Полное сообщение в блоге здесь Анкет

String.prototype.matchall ()

Matchall это новый метод на прототипе строк. Это позволяет нам соответствовать строке с регулярным выражением. Возврат является итератором всех соответствующих результатов.

const input = 'Hello Andy, Where is Beth? Emily was asking for her.';
const regex = /[A-E]/g;
const matches = input.match(regex);

console.log(matches); // [ 'A', 'B', 'E' ]

GlobalThis

Мы используем различный синтаксис для доступа к глобальному объекту в зависимости от того, где мы выполняем код. В браузере мы можем использовать окно , я или Рамка , но с веб -работниками мы ограничены себя . Это совершенно отличается в узле, где вы должны использовать Глобальный .

GlobalThis Целью предоставления стандартного способа доступа к глобальному объекту.

console.log(globalThis); // Window {...} for browsers
console.log(globalThis); // Object [global] {...} for Node
console.log(globalThis); // DedicatedWorkerGlobalScope {...} for Web Workers

Bigint

Bigint является числовым типом для обеспечения поддержки целых чисел произвольной длины (числа больше, чем 2 ** 53 - 1 или 9007199254740991).

Мы можем создать Bigint Добавив n до конца целого числа или позвонив Bigint () Анкет

const bigint = 9879846412313194464434496849n;
const bigintByMethod = BigInt("9879846412313194464434496849");

console.log(bigint); // 9879846412313194464434496849
console.log(bigintByMethod); // 9879846412313194464434496849

console.log(bigint === bigintByMethod); // true

console.log(typeof bigint); // bigint
console.log(typeof bigintByMethod); // bigint

const bigintFromExisting = BigInt(25);

console.log(bigintFromExisting); // 25
console.log(typeof bigintFromExisting); // bigint

Нулечный коалесковый оператор

NULLISH COALESCAING оператор ( ?? ) возвращает свой правый боковой операнд, когда его левая сторона нулевой или неопределенный , в противном случае возвращает левую сторону.

const luckyNumber = 0 ?? 42;
console.log(luckyNumber); // 0

const employeeName = null ?? "Parwinder";
console.log(employeeName); // Parwinder

🚨 Имейте в виду, что оператор не работает над ЛОЖЬ или НАН Анкет Вот где он отличается от OR оператор. Оператор всегда возвращает правдивую ценность, тогда как ??

Если есть и другие новые функции, вы хотели бы, чтобы я покрыл, не стесняйтесь написать мне по адресу contact@bhagat.me ! Или оставьте комментарий с тем, чего мне не хватает.

Счастливого кодирования 👋🏼

Оригинал: “https://dev.to/bhagatparwinder/8-features-from-es2020-es11-you-should-know-1n9”