2025年的JavaScript:有哪些新变化?初学者指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

JavaScript 2025:面向初学者的新特性概述



JavaScript 仍在快速发展,2025年已成为每个学习或使用该语言的人的重要里程碑。ECMAScript 2025(ES2025)的创新以及 Node.js 平台的更新,使代码更简洁、更快速、更安全。在本文中,我们将详细解读那些对初学者和经验丰富的开发者都有用的关键变化。你将了解新增了哪些特性以及如何在实际中应用它们。



1. Temporal API:处理日期和时间的新时代



最令人期待的创新之一就是 Temporal API。以前,处理日期使用的是过时的 Date 对象,它存在很多问题:可变性、时区混淆以及缺乏日历支持。Temporal 解决了所有这些问题。



现在日期和时间变成了不可变的,并且时区的处理变得直观。来看一个例子:



// Temporal API in actionconst now = Temporal.Now.plainDateTimeISO();console.log(now.toString()); // 2025-03-15T14:30:00

// Creating a date with a specified time zoneconst 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 中也能工作了。



下面是一个用于记录方法调用的简单装饰器:



// Decorator for loggingfunction log(target, context) {  const methodName = context.name;  const originalMethod = target;

return function (...args) { console.log(`Calling ${methodName} with arguments: ${JSON.stringify(args)}`); const result = originalMethod.call(this, ...args); console.log(`Result: ${result}`); return result; };}

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

const calc = new Calculator();calc.add(2, 3); // Output: Calling add with arguments: [2,3]// Output: Result: 5


装饰器在身份验证、缓存、数据验证以及其他横切关注点方面特别有用。初学者应记住要点:装饰器只是一个包装另一个函数、为其添加新行为的函数。



3. 改进的数组和集合方法



到 2025 年,处理数组变得更加便捷。出现了简化排序、搜索和数据转换的新方法。让我们来看看最有用的几个。



方法 Array.prototype.groupBy()

允许根据键对数组元素进行分组。以前,你必须编写循环或使用 reduce() 来实现。



const users = [  { name: 'Anna', role: 'admin' },  { name: 'Ivan', role: 'user' },  { name: 'Maria', role: 'admin' },  { name: 'Peter', role: 'user' }];

const grouped = users.groupBy(user => user.role);console.log(grouped);// {// admin: [{ name: 'Anna', role: 'admin' }, { name: 'Maria', role: 'admin' }],// user: [{ name: 'Ivan', role: 'user' }, { name: 'Peter', role: 'user' }]// }


方法 Array.prototype.toSorted()

与

博客

书籍推荐