ECMAScript 6,也称为ES6或ECMAScript 2015,是JavaScript语言标准的一个重大更新。它在2015年6月正式发布,并带来了许多新特性和改进,以帮助开发人员编写更简洁、更强大的代码。以下是ES6的一些主要新增特性:
let和const关键字:
用于声明变量,提供块级作用域(block-scoping)。
- let 允许你声明一个在块级作用域中有效的变量。
- const 允许你声明一个常量,一旦被赋值后就不能再改变。
箭头函数(Arrow Functions):
提供了一种更简洁的函数写法。
const add = (a, b) => a + b;
类(Classes):
引入了基于类的面向对象编程。
class Person {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello, my name is ${this.name}`);
}
}
模板字符串(Template Literals):
允许嵌入表达式的字符串字面量。
const greeting = `Hello, my name is ${name}`;
解构赋值(Destructuring Assignment):
允许从数组或对象中提取数据并赋值给新的变量。
const [a, b] = [1, 2];
const {name, age} = {name: 'John', age: 30};
默认参数(Default Parameters):
函数参数可以有默认值。
function greet(name = 'World') {
console.log(`Hello, ${name}!`);
}
扩展运算符(Spread Operator):
允许一个表达式在某处展开为多个元素。
const parts = ['shoulders', 'knees'];
const body = ['head', ...parts, 'toes'];
Rest参数(Rest Parameters):
允许将不定数量的参数表示为一个数组。
function sum(...numbers) {
return numbers.reduce((a, b) => a + b, 0);
}
Promises:
用于处理异步操作。
const promise = new Promise((resolve, reject) => {
// 异步操作
});
模块导入/导出(Modules):
ES6模块化允许你导入和导出代码
// 导出
export const pi = 3.14159;
// 导入
import { pi } from 'module';
迭代器(Iterators)和生成器(Generators):
提供了一种新的遍历集合的方法。
function* idMaker() {
let index = 0;
while (true)
yield index++;
}
新的集合类型(如Map和Set):
提供了更多的数据结构选择。
const map = new Map();
const set = new Set();
Symbol类型:
引入了一种新的原始数据类型,用于创建唯一的标识符。
Proxy和Reflect:
用于创建对象的代理,并进行操作。
新的内置方法:
如数组的find和findIndex方法,字符串的startsWith,endsWith和includes方法等。
二进制和八进制字面量:
支持二进制(0b)和八进制(0o)字面量。
ES6的这些特性提高了JavaScript的表达能力和编程便利性。