长见识了,第一次知道JavaScript中有这几种函数类型!

247 阅读2分钟

JavaScript 中常见的函数类型包括函数声明、函数表达式、箭头函数、立即执行函数表达式、生成器函数、异步函数以及命名函数表达式。这些不同的函数定义方式提供了灵活的选择,以适应不同的编程需求和风格。

在 JavaScript 中,函数的定义和使用有多种方式,主要包括以下几种:

  1. 函数声明(Function Declaration)

    • 使用 function 关键字直接声明一个函数。这种方式定义的函数在声明之前就可以调用(函数声明提升)。

    • 例子:

      function foo() {
          console.log('Hello, world!');
      }
      foo(); // 输出 "Hello, world!"
      
  2. 函数表达式(Function Expression)

    • 使用 function 关键字定义一个函数,并将其赋值给一个变量。函数表达式不会在声明之前提升。

    • 例子:

      const foo = function() {
          console.log('Hello, world!');
      };
      foo(); // 输出 "Hello, world!"
      
  3. 箭头函数(Arrow Function)

    • 使用箭头语法 => 定义的函数。箭头函数不会有自己的 this 绑定,this 值是从封闭的上下文中继承的。

    • 例子:

      const foo = () => {
          console.log('Hello, world!');
      };
      foo(); // 输出 "Hello, world!"
      
  4. 立即执行函数表达式(Immediately Invoked Function Expression, IIFE)

    • 定义并立即执行的函数表达式,通常用于创建独立的作用域。

    • 例子:

      (function() {
          console.log('Hello, world!');
      })(); // 输出 "Hello, world!"
      
  5. 生成器函数(Generator Function)

    • 使用 function* 关键字定义,生成器函数可以使用 yield 关键字生成多个值,调用时返回一个 Iterator 对象。

    • 例子:

      function* foo() {
          yield 1;
          yield 2;
          yield 3;
      }
      const iterator = foo();
      console.log(iterator.next().value); // 输出 1
      console.log(iterator.next().value); // 输出 2
      console.log(iterator.next().value); // 输出 3
      
  6. 异步函数(Async Function)

    • 使用 async 关键字定义,异步函数总是返回一个 Promise,并且可以使用 await 关键字等待异步操作完成。

    • 例子:

      async function foo() {
          const result = await someAsyncOperation();
          console.log(result);
      }
      foo();
      
  7. 命名函数表达式(Named Function Expression)

    • 类似于函数表达式,但函数有一个自己的名称,这个名称仅在函数内部可见。

    • 例子:

      const foo = function bar() {
          console.log('Hello, world!');
      };
      foo(); // 输出 "Hello, world!"
      // bar(); // Uncaught ReferenceError: bar is not defined