📜  自调用函数 javascript es6 - Javascript (1)

📅  最后修改于: 2023-12-03 14:57:08.796000             🧑  作者: Mango

自调用函数 JavaScript ES6

在 JavaScript 中,我们通常使用自调用函数来创建一个单独的作用域,这样变量、函数名等都不会与全局作用域冲突。自调用函数还可以被用作模块化的解决方案。在 ES6 中,我们可以使用模块化语法来实现模块化,但是自调用函数仍然是一个值得掌握的概念。

基本语法

自调用函数的基本语法如下:

(function () {
  // 函数体
})();

上述语法中,一个匿名函数被创建并立即执行。通过在函数外部添加一对小括号 (),我们可以非常优雅地实现函数的立即执行。函数自身被包裹在了一对圆括号 ( ) 中,这样可以确保 JavaScript 理解该函数要么是被声明,要么是被执行。当然,你在实现自调用函数时也可以使用其他方式,比如逗号运算符或者 void 运算符。

传递参数

我们可以通过自调用函数将参数传递进去,举例如下:

(function (arg1, arg2) {
  console.log(arg1, arg2);
})('Hello', 'world');

在上述代码中,我们定义了一个带参数的自调用函数,并将 Helloworld 两个参数传递给了该函数。执行代码后,控制台将输出 Hello world

返回值

自调用函数也可以返回一个值,在使用时我们可以将返回值存储在变量中,再使用这个变量。比如下面这个示例:

const value = (function () {
  return 42;
})();

console.log(value); // 输出 42

在上述代码中,我们定义了一个自调用函数,并返回值为 42。在执行自调用函数并将其结果赋值给变量 value 后,我们打印该变量。在控制台中应该看到输出结果为 42

应用示例

自调用函数的用途之一是模块化,我们可以这样实现:

const myModule = (function () {
  const privateVar = 'Hello, world!';

  const privateFunc = function () {
    console.log(privateVar);
  };

  return {
    publicFunc: function () {
      privateFunc();
    }
  };
})();

myModule.publicFunc(); // 输出 Hello, world!

在上述代码中,我们定义了一个自调用函数 myModule,函数体内部定义了一个私有变量 privateVar 和一个私有函数 privateFunc,这两者都不能从 myModule 外部访问。我们使用 return 语句返回一个对象,并在该对象内部定义了一个公共函数 publicFunc,该函数内部调用了 privateFunc,从而实现了访问私有函数的目的。在执行 myModule.publicFunc() 后,会在控制台中输出 Hello, world!

通过以上的示例,我们可以看到自调用函数的确是一个很巧妙的概念,也是 JavaScript 开发者必须掌握的一个基础。