JavaScript в 2025 году: что нового? Обзор для начинающих

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

JavaScript в 2025 году: обзор новых возможностей для начинающих

JavaScript продолжает стремительно развиваться, и 2025 год стал важной вехой для всех, кто изучает этот язык или работает с ним. Нововведения ECMAScript 2025 (ES2025) и обновления платформы Node.js делают код чище, быстрее и безопаснее. В этой статье мы разберём ключевые изменения, которые будут полезны как новичкам, так и опытным разработчикам. Вы узнаете, какие новые возможности появились и как их применять на практике.

1. Temporal API: новая эра работы с датами и временем

Одним из самых долгожданных нововведений стал Temporal API. Ранее для работы с датами использовался устаревший объект Date, который имел множество проблем: мутабельность, путаница с часовыми поясами и отсутствие поддержки календарей. Temporal решает все эти проблемы.

Теперь даты и время стали неизменяемыми (immutable), а работа с часовыми поясами — интуитивно понятной. Рассмотрим пример:

// Temporal API в действии
const now = Temporal.Now.plainDateTimeISO();
console.log(now.toString()); // 2025-03-15T14:30:00

// Создание даты с указанием часового пояса
const meeting = Temporal.ZonedDateTime.from({
  timeZone: 'Europe/Moscow',
  year: 2025,
  month: 12,
  day: 25,
  hour: 10,
  minute: 0
});
console.log(meeting.toLocaleString('ru-RU')); // 25.12.2025, 10:00

Теперь вы можете легко сравнивать даты, добавлять дни или месяцы без риска мутаций:

const start = Temporal.PlainDate.from('2025-01-01');
const end = start.add({ months: 3 });
console.log(end.toString()); // 2025-04-01

Для начинающих это означает, что больше не нужно подключать библиотеки вроде Moment.js или date-fns — всё доступно из коробки.

2. Декораторы: официальная поддержка в стандарте

Декораторы — это мощный инструмент для модификации поведения классов и их методов. В 2025 году они наконец-то получили официальный статус в ECMAScript. Раньше их можно было использовать только через TypeScript или Babel, теперь — на чистом JavaScript.

Вот как выглядит простой декоратор для логирования вызова метода:

// Декоратор для логирования
function log(target, context) {
  const methodName = context.name;
  const originalMethod = target;

  return function (...args) {
    console.log(`Вызов ${methodName} с аргументами: ${JSON.stringify(args)}`);
    const result = originalMethod.call(this, ...args);
    console.log(`Результат: ${result}`);
    return result;
  };
}

class Calculator {
  @log
  add(a, b) {
    return a + b;
  }
}

const calc = new Calculator();
calc.add(2, 3); 
// Вывод: Вызов add с аргументами: [2,3]
// Вывод: Результат: 5

Декораторы особенно полезны для аутентификации, кэширования, валидации данных и других сквозных задач. Новичкам стоит запомнить главное: декоратор — это просто функция, которая оборачивает другую функцию, добавляя к ней новое поведение.

3. Улучшенные методы массивов и коллекций

В 2025 году работа с массивами стала ещё удобнее. Появились новые методы, которые упрощают сортировку, поиск и трансформацию данных. Рассмотрим самые полезные из них.

Метод Array.prototype.groupBy()

Позволяет группировать элементы массива по ключу. Раньше для этого приходилось писать циклы или использовать reduce().

const users = [
  { name: 'Анна', role: 'admin' },
  { name: 'Иван', role: 'user' },
  { name: 'Мария', role: 'admin' },
  { name: 'Петр', role: 'user' }
];

const grouped = users.groupBy(user => user.role);
console.log(grouped);
// {
//   admin: [{ name: 'Анна', role: 'admin' }, { name: 'Мария', role: 'admin' }],
//   user: [{ name: 'Иван', role: 'user' }, { name: 'Петр', role: 'user' }]
// }

Метод Array.prototype.toSorted()

В отличие от старого sort(), этот метод не изменяет исходный массив, а возвращает новый отсортированный.

const numbers = [3, 1, 4, 1, 5];
const sorted = numbers.toSorted((a, b) => a - b);
console.log(sorted); // [1, 1, 3, 4, 5]
console.log(numbers); // [3, 1, 4, 1, 5] — исходный не изменился

Также появились toReversed() и toSpliced() — все они работают по тому же принципу неизменяемости.

4. Node.js 2025: улучшения производительности и безопасности

Node.js в 2025 году получил ряд значительных обновлений, которые делают его ещё более привлекательным для backend-разработки. Рассмотрим ключевые моменты.

Встроенная поддержка TypeScript

Теперь Node.js может выполнять TypeScript-файлы без предварительной компиляции. Это упрощает настройку проектов для начинающих:

// app.ts — работает напрямую в Node.js 2025
const greet = (name: string): string => {
  return `Привет, ${name}!`;
};

console.log(greet('Мир')); // Привет, Мир!

Улучшенная работа с потоками (Worker Threads)

Новый API для многопоточности стал проще и безопаснее. Теперь можно легко распределять тяжёлые вычисления:

import { Worker } from 'node:worker_threads';

const worker = new Worker(`
  const { parentPort } = require('worker_threads');
  parentPort.on('message', (data) => {
    parentPort.postMessage(data * 2);
  });
`);

worker.postMessage(21);
worker.on('message', (result) => {
  console.log(result); // 42
});

Новый модуль node:test

Встроенный модуль для тестирования, который не требует установки дополнительных библиотек:

import { test, assert } from 'node:test';

test('сложение чисел', () => {
  assert.strictEqual(1 + 1, 2);
});

test('проверка строки', () => {
  assert.ok('Hello'.includes('ell'));
});

Это особенно удобно для начинающих — не нужно разбираться с Jest или Mocha, всё уже есть в Node.js.

Блоги

Рекомендаций по книгам