JavaScript的立即执行匿名函数的使用

2024-01-11  本文已影响0人  喔牛慢慢爬

下面的JavaScript代码定义了一个立即执行(自执行)的匿名函数:

(function(){
    // 定义一个名为openNewWeb的函数,接收一个url参数,但此处未实现具体功能
    function openNewWeb(url){
        // 可以在这里添加打开新网页的功能逻辑,例如:
        // window.open(url, '_blank');
    };
    // 将openNewWeb方法作为一个属性添加到window.mobileOCjs对象中
    window.mobileOCjs = {
        openNewWeb: openNewWeb
    }
})(); // 立即执行这个匿名函数

该函数内部定义了一个名为openNewWeb的方法,并将其作为属性挂载到全局对象window下的mobileOCjs对象上,这样,在全局作用域下,你就可以通过 mobileOCjs.openNewWeb('url') 来调用这个方法并传入相应的URL来打开新的网页。当然,在上述代码中,openNewWeb方法的具体实现是空的,你需要根据需求填充具体的网页打开逻辑。

注: 最后的()的作用是此函数需要立即执行。

1、什么是立即执行函数?

立即执行的函数(Immediately Invoked Function Expression,IIFE)是一种在定义后立即执行的JavaScript函数。这种函数不会定义函数名,定义后立即执行,并且其作用域仅限自身内部,不会污染全局作用域。

2、立即执行函数的语法格式
(function() {
  // 这里是函数体
  console.log('This function is executed immediately');
})();

eg.

(function (arg) {
     console.log(arg+100);
})(20);
//控制台打印结果:120
!function(arg) {
  // 函数体
  console.log(arg+100);
}(20);
+function(arg) {
  // 函数体
  console.log(arg+100);
}(20);
-void function(arg) {
  // 函数体
  console.log(arg+100);
}(20);
void function(arg) {
    // 函数体
  console.log(arg+100);
}(20);
~function (arg) {
   / / 函数体
   console.log(arg+100);
}(20);
(function() {
 / / 函数体
  console.log('Executed right away');
}).call(this);
3、使用例子
(function() {
  var privateVar = 'I am private';
  
  function privateFunction() {
    console.log(privateVar);
  }

  window.publicAPI = {
    logPrivateVar: function() {
      privateFunction(); // 可以访问到闭包内的privateVar和privateFunction
    }
  };
})();

// 调用公开接口
publicAPI.logPrivateVar(); // 输出 "I am private"
// 但不能直接访问闭包内的私有变量或函数
console.log(privateVar); // 报错,因为privateVar在全局作用域中未定义
上一篇 下一篇

猜你喜欢

热点阅读