JS自调用匿名函数具体实现


在JavaScript中,自调用匿名函数(也称为立即执行的函数表达式,IIFE - Immediately Invoked Function Expression)是一种定义后立即执行的函数。这种函数通常用于创建一个独立的作用域,从而避免变量污染全局作用域。

自调用匿名函数的实现方式如下:


(function() {
    // 这里是函数的代码
    console.log('这是一个自调用匿名函数');
})();

或者使用圆括号的其他形式:


(function() {
    console.log('这也是一个自调用匿名函数');
}());

// 或者使用加号、波浪号等运算符来强制函数作为表达式处理
+function() {
    console.log('通过加号运算符的自调用匿名函数');
}();

!function() {
    console.log('通过逻辑非运算符的自调用匿名函数');
}();

~function() {
    console.log('通过位非运算符的自调用匿名函数');
}();

void function() {
    console.log('通过void运算符的自调用匿名函数');
}();

-function() {
    console.log('通过一元减运算符的自调用匿名函数,但注意这会返回NaN');
}();

在这些例子中,最外层的一对圆括号(或者其他运算符)使得`function`关键字后面的内容被当作一个表达式而不是一个函数声明。紧接着的圆括号立即调用了这个函数。注意,由于JavaScript的语法规则,如果直接在`function`关键字前面加上圆括号,而不使用运算符,那么会导致语法错误,因为函数声明不能被包裹在圆括号中直接执行。这就是为什么通常使用`+`, `!`, `~`, `void`等运算符,或者简单地再次使用圆括号来包裹整个函数表达式。