是否使用iife调用了回调中的匿名函数?

时间:2019-04-30 16:00:17

标签: javascript callback

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

 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') } ();

只有三种方法可以声明和调用函数。 为匿名函数分配名称:函数表达式 给函数起一个名字:函数声明 立即调用功能Express

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

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

1 个答案:

答案 0 :(得分:0)

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变量对其进行访问。