本文介绍JavaScript中立即执行函数表达式(IIFE)的概念,对比其与自执行匿名函数的区别。通过分析命名函数递归调用及arguments.callee的使用示例,指出将普通命名函数误称为自执行函数的误区,强调IIFE在作用域隔离中的明确语义。
IIFE的基本概念与命名辨析
在JavaScript开发中,我们常常见到如下形式的匿名函数写法。
具体代码实现如下:
(function(){
console.log("test");
})();过去,这种写法通常被称为自执行的匿名函数(self-executing anonymous function)。
然而,更准确的术语是:立即调用函数表达式(IIFE,Immediately-Invoked Function Expression)。
即立即调用函数表达式。
相较于“自执行匿名函数”这一说法,“立即调用函数表达式”的含义更为清晰准确。
自执行函数的常见形式与误区
自执行函数存在以下几种典型示例:
代码示例如下:
function foo() { foo(); }以及另一种形式:
代码示例如下:
var foo = function() { arguments.callee(); };更重要的是,像下面这种写法,有时也被误认为是自执行匿名函数:
代码示例如下:
var foo = function() { foo(); };