深入浅出 ECMAScript:从基础到现代 JavaScript 实战

ECMAScript 是由 ECMA 国际(前身为欧洲计算机制造商协会)制定的一种脚本语言规范。它是一种标准化的编程语言,通常被用作实现 JavaScript 的基础。尽管许多人将 ECMAScript 和 JavaScript 视为同义词,但实际上 JavaScript 是 ECMAScript 的一种具体实现。

主要特性
  • 动态类型:变量在运行时确定其数据类型。
  • 基于原型的继承:通过原型链来实现对象的继承。
  • 函数式编程支持:包括高阶函数、闭包等。
  • 异步编程模型:如 Promise 和 async/await 语法。
  • 模块化:ES6 引入了模块系统,允许代码的复用和封装。
版本历史
  • ECMAScript 1 (1997): 初版发布。
  • ECMAScript 3 (1999): 增加了许多新功能,是广泛使用的版本之一。
  • ECMAScript 5 (2009): 引入严格模式,增加新的数组方法等。
  • ECMAScript 6/2015 (2015): 大规模更新,引入类、模块、箭头函数等。
  • 后续版本 (每年更新): 自 ES6 后,ECMAScript 开始采用年度发布的方式,每个新版本都会带来一些改进和新增功能。
示例代码

以下是一些常见的 ECMAScript 代码示例:

  1. 箭头函数:

     javascript 

    深色版本

    const add = (a, b) => a + b;
    console.log(add(5, 3)); // 输出 8
  2. 模板字符串:

     javascript 

    深色版本

    const name = "Alice";
    const greeting = `Hello, ${name}!`;
    console.log(greeting); // 输出 Hello, Alice!
  3. 解构赋值:

     javascript 

    深色版本

    const person = { firstName: 'John', lastName: 'Doe' };
    const { firstName, lastName } = person;
    console.log(firstName, lastName); // 输出 John Doe
  4. 类和继承:

     javascript 

    深色版本

    class Animal {
      constructor(name) {
        this.name = name;
      }
      speak() {
        console.log(`${this.name} makes a noise.`);
      }
    }
    
    class Dog extends Animal {
      speak() {
        console.log(`${this.name} barks.`);
      }
    }
    
    const dog = new Dog("Rex");
    dog.speak(); // 输出 Rex barks.
  5. Promise:

     javascript 

    深色版本

    const fetchData = () => {
      return new Promise((resolve, reject) => {
        setTimeout(() => resolve("Data fetched"), 1000);
      });
    };
    
    fetchData()
      .then(data => console.log(data)) // 输出 Data fetched
      .catch(error => console.error(error));
  6. async/await:

     javascript 

    深色版本

    const fetchDataAsync = async () => {
      try {
        const data = await new Promise(resolve => setTimeout(() => resolve("Data fetched"), 1000));
        console.log(data); // 输出 Data fetched
      } catch (error) {
        console.error(error);
      }
    };
    
    fetchDataAsync();

猜你喜欢

转载自blog.csdn.net/2403_86762465/article/details/142724032