- let和const关键字:
let
和const
允许你声明具有块级作用域的变量和常量。这有助于避免使用var
时可能出现的变量提升和全局污染问题。 - 模板字符串:使用反引号(`)可以创建多行字符串和嵌入表达式。
-
javascript
-
let name = 'world'; let greeting = `Hello, ${name}!`; // "Hello, world!"
- 箭头函数:箭头函数提供了一种更简洁的函数语法,并且它们不绑定自己的
this
值。 -
javascript
-
let add = (a, b) => a + b;
- 默认参数:允许你为函数参数设置默认值。
-
javascript
-
function greet(name = 'world') { return `Hello, ${name}!`; }
- 解构赋值:允许你从数组或对象中提取值,并将其赋值给变量。
-
javascript
-
let [first, second] = [1, 2]; // first = 1, second = 2 let { name, age } = { name: 'Alice', age: 25 }; // name = 'Alice', age = 25
- Promise:一个用于处理异步操作的对象,它代表了一个最终可能完成(解析)或失败(拒绝)的异步操作及其结果值。
- 类(Class):基于原型的面向对象编程的语法糖。
-
javascript
-
class Greeter { constructor(name) { this.name = name; } greet() { return `Hello, ${this.name}!`; } }
- 模块:通过
import
和export
关键字,可以更容易地组织和共享代码。 - 迭代器和生成器:提供了遍历数据结构(如数组、对象等)的统一接口,以及更灵活的函数式编程模型。
- Map和Set:两种新的集合数据类型,分别用于存储键值对和唯一值。
- Proxy对象:允许你定义基本操作的自定义行为(如属性查找、赋值、枚举、函数调用等)。
- 反射API:提供了一组用于操作对象的方法,如
Reflect.get()
、Reflect.set()
等。 - 模块化的系统API:如
URL
、URLSearchParams
等,为处理URLs和查询字符串提供了更简洁的接口。 - 二进制和八进制字面量:可以直接在代码中书写二进制(
0b
或0B
)和八进制(0o
或0O
)字面量。 - 常量:使用
const
关键字可以定义常量,其值在声明后不能被修改。