美文网首页
JavaScript的立即执行匿名函数的使用

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

作者: 喔牛慢慢爬 | 来源:发表于2024-01-11 09:58 被阅读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函数。这种函数不会定义函数名,定义后立即执行,并且其作用域仅限自身内部,不会污染全局作用域。

  • 特点:
    1、匿名性:这种函数没有名称,通过一个函数表达式来定义。
    2、自执性:函数定义完成后会立即执行,不需要像普通函数那样通过调用函数名的方式来执行。
  • 立即执行函数的优点:
    1、避免污染全局作用域:定义在IIFE内部的变量和函数不会成为全局变量,从而避免了潜在的命名冲突问题。
    2、创建私有作用域:IIFE可以用来创建一个私有的、封闭的作用域,在这个作用域内声明的变量和函数只能在这个作用域内访问,外部无法直接访问。
    3、模块化编程:IIFE可以用于实现模块化的代码组织方式,每个模块都有自己独立的作用域,各模块间互不影响。
2、立即执行函数的语法格式
  • 使用括号包裹函数表达式并立即调用:随后一对空括号立即执行返回的未命名函数,括号内是匿名函数的参数
(function() {
  // 这里是函数体
  console.log('This function is executed immediately');
})();

eg.

(function (arg) {
     console.log(arg+100);
})(20);
//控制台打印结果:120
  • 利用运算符进行调用,如void、+、-、!、~等一元运算符:
!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在全局作用域中未定义

相关文章

  • JS中的IIFE和闭包

    IIFE( 立即调用函数表达式) 是一个在定义时就会立即执行的JavaScript函数。 这是一个被称为自执行匿名...

  • javascript作用域和作用域链

    立即执行函数表达式是什么?有什么作用? 立即执行函数就是 声明一个匿名函数 马上调用这个匿名函数 立即执行函数有什...

  • 自调函数的N种写法

    首先说什么是自调函数,我的理解就是JavaScript中匿名函数自己调用自己。代码运行到此立即执行,因此也叫立即执...

  • 立即执行函数

    1、立即执行函数是什么? 声明一个匿名函数,立马调用这个匿名函数。下面就是一个立即执行函数: (function(...

  • 匿名函数(立即执行函数)

    立即执行函数 别称(初始化函数) IIFE 全称(immediately-invoked function exp...

  • JS函数以及作用域问题

    1.立即执行函数表达式是什么?有什么作用 立即执行函数表达式就是 声明一个匿名函数 马上执行这个匿名函数 典型写法...

  • 立即执行匿名函数(IIFE)

    立即执行匿名函数:1. 声明一个匿名函数;2. 马上调用这个匿名函数 如:( function () {} )()...

  • JS Task4

    1. 立即执行函数表达式是什么?有什么作用? 立即执行函数就是声明一个匿名函数马上调用这个匿名函数 那么为什么还要...

  • lesson20 JS作用域链 & JS引用类型

    第 1 题 立即执行函数表达式是什么?有什么作用? 1. 立即执行函数是什么 立即执行函数就是 声明一个匿名函数 ...

  • 什么是立即执行函数,它有什么作用?

    一:什么是立即执行函数? 声明一个函数,并马上调用这个匿名函数就叫做立即执行函数;也可以说立即执行函数是一种语法,...

网友评论

      本文标题:JavaScript的立即执行匿名函数的使用

      本文链接:https://www.haomeiwen.com/subject/diltodtx.html