Необязательная цепочка
В 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, но, надеюсь, скоро он будет работать во всех браузерах.