文章列表

立即执行函数

Champ2026.06.05 15:44访问量0 次阅读
立即执行函数
What's IIFE?

立即执行函数 IIFE ,是一种定义后立即执行的函数,常用于创建一个独立的作用域。是ES6之前的用法,主要用于解决在没有出现 let、const 之前的 var 变量所带来的问题,它的核心作用是隔离作用域,解决全局污染和闭包陷阱的问题。

在 ES6 之前,使用立即执行函数来解决闭包问题的例子:

for (var i = 0; i < 3; i++) {
  (function(j) {
    setTimeout(function() { console.log(j); }, 100);
  })(i);
}
// 输出 0,1,2 而不是 3,3,3

立即执行函数可以这样记忆:就是两个括号。

  1. 第一个括号里面放函数表达式(注意不是函数声明)
  2. 第二个括号里面可以什么都不放,或者放调用的参数

第一个括号表示的是一整个函数表达式,可以像这样理解:

括号内是一个匿名函数表达式 function() { ... },所以整个 (function() { ... }) 的值就是这个函数对象本身(就像 const fn = function() {...} 里的右侧部分==function(){...}==一样)。

第二个括号可以这样理解:

function sayHi() { console.log("Hi"); }  // 定义
sayHi;     // 只是引用函数,不执行(实际上单独写也没意义)
sayHi();   // 执行

也就是说,要多加一个括号才能执行函数。如果没有第二个括号,这个函数就什么都不会动,只是定义了,但并没有执行。

同时,这个括号里面也可以传参数,就像平时调用sayHi()的时候往括号里传参一样。

其实调用立即执行函数也不一定需要第一个括号,也可以是下面这样:

+function() { console.log(1); }();
!function() { console.log(2); }();
~function() { console.log(3); }();
历史留言 (0)
ICP备案号浙ICP备2026065730号-1公安备案号浙公网安备33019202003213号