- 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关键字可以定义常量,其值在声明后不能被修改。