使用iife调用回调内的匿名函数吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用iife调用回调内的匿名函数吗?相关的知识,希望对你有一定的参考价值。

我试图理解如何调用回调函数内的匿名函数。 例如:

 const callbackExample = function(param, callback) {
        console.log('This is an example of a callback function');
        callback(param);
    };

    callbackExample('What', function(param) {
        console.log(param);
    })

我的问题是如何调用匿名函数?如果我将回调替换为等于下面的匿名函数。回调是否替代匿名函数。

Does the callback === function(param) { console.log(param) }

What I mean is I cannot invoke the function like this.
function() { console.log('Not') } ();

声明和调用函数的方法只有三种。为匿名函数分配一个名称:函数表达式给函数命名:函数声明立即调用函数表达

我的理论是当没有对回调函数使用函数表达式或函数声明时,javascript会解析代码并检测匿名函数并使用iife来调用匿名函数。

我在互联网上找不到任何东西,也没有描述幕后发生的事情的api,所以我想有人可以向我解释一下。

答案

IIFE(即时调用函数表达式)只是社区为此特定构造创建的名称:

  (function() { /*...*/ })()

它是一个函数表达式,直接跟随对该函数的函数调用。而已。您的代码中没有IIFE。

我的问题是如何调用匿名函数?

函数使用对它们的引用来调用,它们的名称只是一个调试功能(它是函数体内函数本身的引用)。函数不需要名称:

  let test = function /*irrelevant*/ () { };
  let test2 = test; 
  test(); test2();

如果使用函数声明,则该名称不仅用作函数名称,还用作引用该函数的变量的名称:

  function named() { }

几乎等于(让我们在这里忽略“吊装”):

  var named = function named() { }

如果使用函数表达式作为其参数之一调用函数:

   function called(reference) { }

   called(function irrelevant() { })

然后计算函数表达式,创建一个函数,并将对它的引用作为参数传递给called函数,然后可以使用reference变量访问它。

以上是关于使用iife调用回调内的匿名函数吗?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript IIFE

JavaScript-函数(调用参数returnarguments匿名回调递归函数)函数案例

通过取父级for循环的i来理解闭包,iife,匿名函数

JavaScript高级 对象 函数 回调函数 IIFE

javascript要点1

如何在Node.js的回调中正确测试代码?