介绍 ES6/ES7/ES8 的新特性和语法

86 阅读1分钟

当谈到ES6/ES7/ES8的新特性和语法时,以下是一些详细的介绍和示例说明:

ES6(ECMAScript 2015):

  1. 块级作用域和常量声明:

    function example() {
      if (true) {
        let x = 10; // 块级作用域的变量
        const y = 20; // 块级作用域的常量
        console.log(x); // 10
        console.log(y); // 20
      }
      console.log(x); // ReferenceError: x is not defined
      console.log(y); // ReferenceError: y is not defined
    }
    
  2. 箭头函数:

    const add = (a, b) => a + b;
    console.log(add(2, 3)); // 5
    
    const greet = name => `Hello, ${name}!`;
    console.log(greet('Alice')); // Hello, Alice!
    
  3. 类和继承:

    class Person {
      constructor(name) {
        this.name = name;
      }
    
      sayHello() {
        console.log(`Hello, ${this.name}!`);
      }
    }
    
    class Student extends Person {
      constructor(name, grade) {
        super(name);
        this.grade = grade;
      }
    
      sayGrade() {
        console.log(`I am in grade ${this.grade}`);
      }
    }
    
    const student = new Student('Alice', 10);
    student.sayHello(); // Hello, Alice!
    student.sayGrade(); // I am in grade 10
    
  4. 模板字符串:

    const name = 'Alice';
    const age = 25;
    
    const message = `My name is ${name} and I am ${age} years old.`;
    console.log(message); // My name is Alice and I am 25 years old.
    
  5. 解构赋值:

    const numbers = [1, 2, 3, 4, 5];
    const [first, second, ...rest] = numbers;
    
    console.log(first); // 1
    console.log(second); // 2
    console.log(rest); // [3, 4, 5]
    
    const person = { name: 'Alice', age: 25 };
    const { name, age } = person;
    
    console.log(name); // Alice
    console.log(age); // 25
    
  6. 模块化:

    // math.js
    export const add = (a, b) => a + b;
    
    // main.js
    import { add } from './math.js';
    
    console.log(add(2, 3)); // 5
    

ES7(ECMAScript 2016):

  1. includes方法:

    const str = 'Hello, world!';
    console.log(str.includes('world')); // true
    
    const numbers = [1, 2, 3, 4, 5];
    console.log(numbers.includes(3)); // true
    
  2. 指数运算符:

    console.log(2 ** 3); // 8
    console.log(10 ** -2); // 0.01
    

ES8(ECMAScript 2017):

  1. async/await

:

function fetchData() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Data fetched!');
    }, 2000);
  });
}

async function getData() {
  try {
    const data = await fetchData();
    console.log(data); // Data fetched!
  } catch (error) {
    console.error(error);
  }
}

getData();
  1. Object.valuesObject.entries:
    const obj = { a: 1, b: 2, c: 3 };
    
    const values = Object.values(obj);
    console.log(values); // [1, 2, 3]
    
    const entries = Object.entries(obj);
    console.log(entries); // [['a', 1], ['b', 2], ['c', 3]]
    

以上是一些ES6/ES7/ES8的新特性和语法,它们可以提高JavaScript的可读性和编程体验,并为开发人员提供更多的功能和灵活性。