khusamov / khusamov.github.io

Инструкции на все случаи жизни программиста
http://khusamov.github.io
1 stars 0 forks source link

Новые фичи JavaScript 2023 #12

Open khusamov opened 1 year ago

khusamov commented 1 year ago

https://my-js.org/blog/js-ts-features/

Оператор нулевого слияния / Nullish coalescing operator (??): является альтернативой оператора ||.

globalThis: предоставляет доступ к глобальным переменным, независимо от среды выполнения кода (браузер, Node.js и др.

import.meta: в числе прочего, при использовании модулей ES, предоставляет доступ к URL текущего модуля

Оператор присваивания нулевого слияния / Nullish coalescing assignment (??=): присваивает новое значение переменной только в том случае, когда текущим значением переменной является null или undefined

Оператор присваивания логического И / Logical and assignment (&&=): присваивает новое значение переменной только в том случае, когда текущим значением переменной является истинное значение

Оператор присваивания логического ИЛИ / Logical or assignment (||=): присваивает новое значение переменной только в том случае, когда текущим значением переменной является ложное значение

Не понятно для чего нужен WeakRef WeakRef: содержит "слабую" ссылку на объект. Слабая ссылка не препятствует уничтожению объекта сборщиком мусора

await верхнего уровня / Top level await: позволяет использовать ключевое слово await на верхнем уровне модулей, что избавляет от необходимости оборачивать асинхронный код в асинхронную функцию

Статические члены класса / Static class members: делает поле класса (свойство или метод) статическим

Статические блоки инициализации / Static initialization blocks: блок кода, который выполняется при инициализации класса. Как правило, такие блоки используются в качестве "конструкторов" статических членов классов

Утверждение импорта / Import assertion (пока доступно только в V8): определяет тип импортируемого ресурса. Может использоваться, например, для импорта JSON без необходимости его разбора

import json from './foo.json' assert { type: 'json' };
console.log(json.answer); // 42

Причина ошибки / Error cause: при повторном выбросе исключения (re-throwing) в качестве второго аргумента в конструктор Error можно передать объект со свойством cause, значением которого является оригинальное исключение

try {
  try {
    connectToDatabase();
  } catch (err) {
    throw new Error('Не удалось подключиться к базе данных.', { cause: err });
  }
} catch (err) {
  console.log(err.cause); // ReferenceError: connectToDatabase is not defined
}