**ECMAScript 6 入门**
ECMAScript(简称ES)是JavaScript语言的标准化规范,由欧洲计算机协会(ECMA International)制定。ES6,全称ECMAScript 2015,是第六版标准,它引入了大量的新特性,极大地提升了JavaScript的编程效率和现代Web开发的能力。
1. **let 和 const 声明**
在ES6之前,JavaScript只有var关键字进行变量声明。ES6引入了let和const,let允许重新赋值,但不允许在同一作用域内重声明;const则声明常量,一旦赋值后不可改变。
2. **模板字符串**
模板字符串使用反引号(`)标识,可以包含插值表达式,使得字符串拼接更加简洁。例如:
```javascript
let name = 'Alice';
console.log(`Hello, ${name}!`); // 输出 "Hello, Alice!"
```
3. **箭头函数**
箭头函数的语法更简洁,它将function关键字替换为箭头(=>)。例如:
```javascript
let add = (x, y) => x + y;
console.log(add(1, 2)); // 输出 3
```
4. **类与继承**
ES6引入了基于原型的面向对象编程的类概念,以及通过extends关键字实现继承。类的定义如下:
```javascript
class Person {
constructor(name) {
this.name = name;
}
}
class Student extends Person {
constructor(name, grade) {
super(name);
this.grade = grade;
}
}
```
5. **解构赋值**
ES6允许我们从数组或对象中提取值,直接赋值给新的变量。例如:
```javascript
let [a, b] = [1, 2];
console.log(a, b); // 输出 1 2
let obj = {x: 1, y: 2};
let {x, y} = obj;
console.log(x, y); // 输出 1 2
```
6. **默认参数**
函数参数可以设置默认值,当传入的实参未定义时,会使用默认值。例如:
```javascript
function greet(name = 'World') {
console.log(`Hello, ${name}!`);
}
greet(); // 输出 "Hello, World!"
```
7. **生成器(Generators)**
生成器允许函数暂停执行并在稍后恢复,用于实现异步操作或创建迭代器。例如:
```javascript
function* count() {
yield 1;
yield 2;
yield 3;
}
for (let num of count()) {
console.log(num);
} // 输出 1 2 3
```
8. **模块系统**
ES6引入了模块系统,通过import和export关键字进行模块导入和导出。例如:
```javascript
// 导出
export const PI = 3.14;
// 导入
import { PI } from './math';
console.log(PI); // 输出 3.14
```
9. **Promise 对象**
Promise用于处理异步操作,提供了一种链式调用的方式处理回调地狱。例如:
```javascript
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => resolve('Data fetched'), 2000);
});
}
fetchData()
.then(data => console.log(data))
.catch(error => console.error(error));
```
10. **Set 和 Map 数据结构**
Set存储不重复的值,Map则提供了键值对的存储,两者都提供了丰富的操作方法。例如:
```javascript
let set = new Set([1, 2, 3, 4, 4]);
console.log(set.size); // 输出 4
let map = new Map();
map.set('key1', 'value1');
console.log(map.get('key1')); // 输出 "value1"
```
以上只是ES6中的一部分新特性,实际上还包括默认参数、增强的对象字面量、剩余与扩展运算符、尾调用优化等众多内容。掌握这些特性,能够帮助开发者写出更加高效、可维护的JavaScript代码。