自学内容网 自学内容网

【整理】自执行函数

自执行函数

自执行函数(Self-Executing Function)或立即调用的函数表达式(Immediately Invoked Function
Expression, IIFE)是一种设计模式,用于创建一个新的作用域,从而避免变量污染全局作用域。这种函数在定义后会立即被调用。

自执行函数的基本语法如下:
// 使用括号
(function() {
    // ...
})();

// 使用感叹号(不推荐,因为可能导致混淆)
!function() {
    // ...
}();

// 使用加号(同样不推荐)
+function() {
    // ...
}();

// 使用减号(同样不推荐)
-function() {
    // ...
}();

在开发中,使用括号是最常见和推荐的方式,因为它清晰明了,不会引起混淆。

注意:自执行函数前要加个分号;防止前一个语句未正确以分号结尾而导致的语法错误。

//自执行函数可以接收参数,就像普通的函数一样:
;(function (param1, param2) {
      console.log(param1 + ", " + param2);
    })("Hello", "World");
立即调用的函数表达式

立即调用的函数表达式和自执行函数是一个意思。把自执行函数赋值给一个变量,可以通过调用函数返回的公共方法以访问私有变量和函数

var module = (function() {
    var privateVar = "I am private";

    function privateFunction() {
        console.log(privateVar);
    }

    return {
        publicMethod: function() {
            privateFunction();
        }
    };
})();

// 调用公共方法以访问私有变量和函数
module.publicMethod(); // 输出: I am private
总结:

自执行函数在js开发中经常用到,尤其是用于脚本,插件,等私有代码类的场景。创建私有变量和函数,这些变量和函数只能在该函数的作用域内访问,从而避免了全局命名空间的污染,保证自己的代码纯洁性。例如Vue的源码就是一个立即调用的函数表达式:

var Vue = (function (exports) {
...
exports.KeepAlive= KeepAlive;
exports.computed= computed;
exports.createApp= createApp;
exports.h = h;
exports.reactive= reactive;
exports.ref = ref;
...
return exports
}({}));

原文地址:https://blog.csdn.net/baidu_39812199/article/details/143966426

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!