为什么我们不能传递一个命名函数而不是一个匿名函数呢?

Why cant we pass a named function instead of a anonymous function?

本文关键字:函数 一个 我们 为什么 不能      更新时间:2023-09-26

我已经有一些javascript的经验,但我有一个疑问,相当长一段时间:为什么你不能传递一个命名函数的地方,它是一个匿名函数来执行一段代码?即:

document.getElementById('btn').addEventListener('click', function(){
    alert('Hello World');
});

现在假设我已经有一个函数来做这个

var func = function(){
    alert('Hello World');
}

为什么它不作为click事件的回调来执行?

 document.getElementById('btn').addEventListener('click', func);

创建一个匿名函数然后调用命名函数似乎是多余的:

 document.getElementById('btn').addEventListener('click', function(){
     func();
 });

我必须看看你的完整代码,但你可以传递一个函数作为一个变量。

document.getElementById('button1').addEventListener('click', function(){
alert('Hello World');
});

var func = function(){
   alert('Hello World, it is me again.');
};
document.getElementById('button2').addEventListener('click', func);

在这里查看小提琴:

https://jsfiddle.net/b4ktmp09/

您是否可能在代码中的错误位置声明函数(func)的变量,导致它为空?