ES6 特性(个人学习向)

67 阅读1分钟

ES6(ECMAScript 2015)引入了一系列新的特性和语法,极大地增强了 JavaScript 的功能和可读性。以下是一些主要的 ES6 特性:

1. 块级作用域

  • letconst 声明

    • let 用于声明块级作用域的变量。
    • const 用于声明常量,常量的值不可修改。
{
  let x = 10;
  const y = 20;
}
console.log(x); // ReferenceError
console.log(y); // ReferenceError

2. 箭头函数

  • 箭头函数提供了更简洁的函数表达式,并且不绑定 this
const add = (a, b) => a + b;
console.log(add(2, 3)); // 5

3. 模板字符串

  • 使用反引号(`)创建字符串,支持多行字符串和插值表达式。
const name = 'Alice';
const greeting = `Hello, ${name}!`;
console.log(greeting); // Hello, Alice!

4. 解构赋值

  • 可以从数组或对象中提取值并赋给变量。
// 数组解构
const arr = [1, 2, 3];
const [a, b] = arr;

// 对象解构
const obj = { x: 1, y: 2 };
const { x, y } = obj;

5. 默认参数

  • 函数参数可以设置默认值。
function multiply(a, b = 1) {
  return a * b;
}
console.log(multiply(5)); // 5

6. 扩展运算符

  • 使用 ... 语法可以展开数组或对象。
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5]; // [1, 2, 3, 4, 5]

const obj1 = { a: 1 };
const obj2 = { ...obj1, b: 2 }; // { a: 1, b: 2 }

7.

  • ES6 引入了类的概念,提供了更清晰的面向对象编程方式。
class Animal {
  constructor(name) {
    this.name = name;
  }
  speak() {
    console.log(`${this.name} makes a noise.`);
  }
}

const dog = new Animal('Dog');
dog.speak(); // Dog makes a noise.

8. Promises

  • Promises 提供了一种解决异步编程的方式,简化了回调地狱问题。
const myPromise = new Promise((resolve, reject) => {
  // 异步操作
  resolve('Success!');
});

myPromise.then(result => console.log(result)); // Success!

9. 模块化

  • ES6 引入了模块系统,可以使用 importexport 关键字进行模块的导入和导出。
// myModule.js
export const pi = 3.14;
export function add(a, b) {
  return a + b;
}

// main.js
import { pi, add } from './myModule';
console.log(pi); // 3.14

10. 符号(Symbol)

  • Symbol 是一种新的原始数据类型,主要用于创建唯一的标识符。
const sym = Symbol('description');
console.log(sym); // Symbol(description)

11. 迭代器和生成器

  • 迭代器:对象,定义了如何访问集合中的元素。
  • 生成器:使用 function* 声明的函数,可以暂停和恢复执行。
function* generator() {
  yield 1;
  yield 2;
}

const gen = generator();
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2

总结

ES6 引入了许多新特性,使得 JavaScript 更加现代化和易于使用。了解这些特性可以帮助开发者编写更高效、可读性更强的代码。