我试图理解如何调用回调函数内的匿名函数。 例如:
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
变量访问它。