Необязательная цепочка

В JavaScript, когда вы пытаетесь получить доступ к свойству или вызвать метод для объекта, который является null или undefined, это приводит к ошибке. Это часто может приводить к громоздким и повторяющимся проверкам значений null или undefined перед доступом к вложенным свойствам или вызову методов.

В приведенном выше примере необязательная цепочка (?.) упрощает код, устраняя необходимость в явных проверках null/undefined. Это позволяет вам напрямую обращаться к вложенным свойствам (user.address.city), не беспокоясь о том, что промежуточные свойства могут оказаться неопределенными (user.address).

Необязательная цепочка помогает писать более лаконичный и читаемый код, особенно при работе со сложными объектными структурами или при извлечении данных из API, которые не всегда могут возвращать полные данные.

Это также особенно полезно при работе с TypeScript + React, поскольку позволяет обрабатывать необязательные свойства или значения, допускающие значение NULL, безопасным для типов образом, что часто встречается при ссылке на состояние.

BigInt()

Тип данных BigInt удобен для работы с целыми числами, которые превышают безопасный предел целых чисел Number.MAX_SAFE_INTEGER (как показано выше). Он позволяет выполнять арифметические операции и точно представлять чрезвычайно большие числа. Он отлично подходит для финансовых расчетов (различные валюты, процентные ставки и т. д.), математических/научных расчетов или моделирования и хранения данных, поскольку предотвращает ошибки округления и обеспечивает точность.

Важно отметить, что значения BigInt не преобразуются неявно в обычный числовой тип, и они имеют другой набор операций по сравнению с обычными числами JavaScript. Арифметические операции с BigInt значениями должны выполняться с использованием соответствующих BigInt операторов или методов. На самом деле, если вы запустите typeof против BigInt, у него будет свой собственный тип данных с тем же именем.

Логические операторы присваивания

Логические операторы присваивания предлагают лаконичные способы присвоения значений на основе логических условий. Они могут упростить код и сделать его более читабельным за счет уменьшения потребности в повторяющихся проверках и назначениях. Логические операторы присваивания можно использовать для присвоения значений по умолчанию переменным, если они в настоящее время равны null или undefined, как показано в примере с x и y, поэтому вам не нужны явные нулевые проверки и присваивания.

Их можно использовать для псевдозапоминания, сохраняя вычисленные значения в переменной, если она еще не определена, оптимизируя дорогостоящие или повторяющиеся вычисления, как показано в примере cachedResult выше. Мы также можем задействовать логические операторы присваивания для условного обновления переменной на основе определенных условий, что позволяет нам писать краткий и читаемый код при выполнении условных присваиваний.

Метод массива и строки: at()

Метод at() для массивов и строк — это относительно небольшое обновление, но это очень хорошая реализация качества жизни. Наконец-то мы можем получить доступ к последнему элементу массива без использования [array.length - 1]. Кроме того, забавный факт, причина, по которой мы никогда не могли просто сделать array[-1], заключается в том, что массивы — это объекты в JavaScript, и вы можете думать о каждом индексе в массиве как о ключе, а элемент массива — как значение. Итак, когда мы используем обозначение скобок в нашем массиве и ищем ключ -1, он не определен, поскольку индексация массива начинается с 0.

Изменить массив методами копирования

Несколько месяцев назад были удалены несколько свежих методов: toSorted(), toSpliced() и toReversed().

Эти методы работают так же, как sort(), splice() и reverse(), но не изменяют исходный массив, а вместо этого создают новый массив.

Мы также получили аналогичный неразрушающий метод with(), который позволяет изменить значение в массиве на новое значение, подобное array[0] = ‘newValue’, и, как и другие методы, также возвращает новый массив.

Мы уже можем начать использовать их случайно, так как большинство основных браузеров уже поддерживают их использование, если только вы не используете Firefox, и в этом случае мне очень жаль.

найтипоследнее()

Иногда первое место, где вы хотите искать элемент, является последним местом, которое вы обычно ищете. Метод findLast() перебирает массив в обратном порядке и возвращает значение первого элемента, удовлетворяющего заданной функции тестирования. Если никакие элементы не удовлетворяют функции тестирования, возвращается undefined. Итак, в примере мы используем findLast() в массиве чисел LOST. findLast() принимает обратный вызов и возвращает первое число, которое соответствует условию меньше 24, то есть 23.

setHTML()

Вы слышали о innerHTML или dangerouslySetInnerHTML в React? Если вы еще не видели его, то, вероятно, когда-нибудь увидите. Мы используем его, когда хотим отображать введенные пользователем теги как HTML, но это очень опасно (поэтому в React они добавили слово опасно). Обычно, если мы хотим предоставить пользователю эту возможность, мы потребуется дезинфицировать введенный пользователем HTML-код, в противном случае мы становимся уязвимыми для вредоносных атак. setHTML() делает все это за один раз: мы можем передать несанитизированную строку HTML в качестве первого аргумента и объект дезинфицирующего средства в качестве второго. Прямо сейчас это доступно только в Chrome и Edge, так что в основном только в Chrome, но, надеюсь, скоро он будет работать во всех браузерах.

Рекомендации

MDN
W3Schools
Sitepoint
Paweł Grzybek
The New Stack