IIFE(Immediately Invoked Function Expression)是一种 JavaScript 函数的写法,这种函数在定义后立即执行。它的基本语法是:
(function() {
// 函数体
})();
一个 IIFE 主要包含三个部分:
()
包裹函数定义,将函数声明转换为表达式()
用于立即调用这个函数// 不使用 IIFE
var name = "全局变量";
console.log(name); // "全局变量"
// 使用 IIFE
(function() {
var name = "局部变量";
console.log(name); // "局部变量"
})();
console.log(name); // "全局变量"
// 不好的做法
var counter = 0;
function increment() {
counter++;
}
// 使用 IIFE 的好做法
var counter = (function() {
var count = 0;
return {
increment: function() {
count++;
return count;
}
};
})();
var module = (function() {
// 私有变量
var privateVar = "我是私有的";
// 私有方法
function privateFunction() {
return privateVar;
}
// 返回公共接口
return {
publicMethod: function() {
return privateFunction();
}
};
})();
(function() {
console.log("基础IIFE");
})();
(function(name) {
console.log("你好, " + name);
})("张三");
var result = (function() {
return "IIFE的返回值";
})();
(() => {
console.log("使用箭头函数的IIFE");
})();
(function() {
// 页面初始化代码
document.querySelector('#app').style.display = 'block';
loadConfig();
setupEventListeners();
})();
(function($) {
// 这里的 $ 就是 jQuery
$('.myButton').click(function() {
// 处理点击事件
});
})(jQuery);
const counter = (function() {
let count = 0; // 私有变量
return {
increment() {
return ++count;
},
getCount() {
return count;
}
};
})();
立即执行函数表达式(IIFE)是 JavaScript 中一个重要的概念,它能:
虽然在现代 JavaScript 开发中,我们有了更多选择(如模块系统),但理解 IIFE 仍然很重要,因为: