JavaScript的ES6(ECMAScript 2015)引入了许多新特性,极大地增强了语言的功能和表达力。 以下是ES6的一些重点内容,涵盖了语言的核心更新:
一、let 和 const 关键字
1. let 允许你声明一个块作用域的变量。
# 1.声明的变量只在所处于的块级有效
if (true) {
let age = 18;
}
console.log(age) // age is not defined
# 2.不存在变量提升(也就是使用变量前,需要先定义)
console.log(age); // age is not defined
let age = 20;
2. const 用于声明一个只读的常量。
# 1.具有块级作用域
if (true) {
const age = 18;
}
console.log(age) // age is not defined
# 2.声明常量时必须赋值
const PI; // Missing initializer in const declaration
# 3.量赋值后,值不能修改
const PI = 3.14;
PI = 100; // Assignment to constant variable.
二、箭头函数 (Arrow Functions)
提供了更简洁的函数表达式写法,例如
# 1.1 常规函数
function add(a, b) {
return a + b;
}
# 1.2 箭头函数
const add = (a, b) => a + b;
console.log(add(2, 3)); // 输出: 5
三、模板字符串 (Template Literals)
使用反引号 ` 来定义字符串,可以包含嵌入表达式 ${expression}。
四、解构赋值 (Destructuring Assignment)
允许你从数组或对象中提取数据,并将其赋值给不同变量。
例如,从数组中解构:const [a, b] = [1, 2];,从对象中解构:const {name, age} = {name: ‘John’, age: 30};
五、默认参数值
在函数参数中可以直接设置默认值,例如:
function greet(name = 'World') {
return Hello, ${name}!;
}
六、Rest 参数和展开运算符
Rest 参数允许你将一个不定数量的参数表示为一个数组。例如:
function sum(…numbers) {
return numbers.reduce((a, b) => a + b, 0);
}
展开运算符可以将数组元素或对象的属性展开到另一个数组或对象中。例如:Math.max(…[1, 2, 3]);
七、Symbol
一种新的原始数据类型,用于创建唯一的标识符。例如:
const symbol = Symbol('description');
八、Promises
提供了一种处理异步操作的方式,比传统的回调函数更加清晰和强大。例如:
new Promise((resolve, reject) => {
/* … */
});
九、类和继承 (Classes and Inheritance)
ES6引入了class关键字,使得类的定义和继承变得更加容易。例如:
class Person {
constructor(name) {
this.name = name;
}
greet() {
return Hello,
${this.name}!;
}
}
十、模块 (Modules)
使用import和export关键字来导入和导出模块,使得代码的组织和管理更加模块化。
例如,导出:export const pi = 3.14;,导入:import { pi } from ‘./module’;
十一、迭代器和生成器 (Iterators and Generators)
迭代器提供了一种统一的接口,用于访问容器对象中的元素。
生成器函数允许你定义一个可暂停执行的函数。
例如,生成器函数:function* generator() { yield 1; yield 2; }
十二、Map 和 Set
Map 对象保存键值对,并且可以记住键的原始插入顺序。
Set 对象允许你存储任何类型的唯一值,无论是原始值还是对象引用。
例如:const mySet = new Set([1, 2, 3]);
这些特性使得JavaScript在开发复杂应用和现代web开发中变得更加强大和灵活。通过使用这些新特性,你可以编写更加简洁、可读性更高的代码