我试图了解如何调用回调函数内部的匿名函数。
例如:
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,所以我想请人向我解释一下。
答案 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
变量对其进行访问。