pset8;cs50;JavaScript;何时使用命名函数以及何时在回调中使用匿名函数



在pset8中,我想出了2种解决方案,用于在用户单击标记时显示信息窗口。

 google.maps.event.addListener(marker, 'click', function() {
            showInfo(marker, articlesContent);
};

google.maps.event.addListener(marker, 'click', showInfo(marker, articlesContent));

为什么前者/后者有效或无效?我的意思是showInfo不也是一个函数吗?那为什么你需要想出另一个匿名函数来调用另一个函数呢?

如果这是一个新手类型的错误,我很抱歉,但我对 Javascript 完全陌生,并且已经为此而奋斗了好几天。如果有人能帮助我,将不胜感激!

在第一种情况下,您将函数作为参数传递。在第二种情况下,您正在调用该函数。

第一种情况的示例:https://jsfiddle.net/anqpby6s/

document.getElementById("myBtn").addEventListener("click", function(){
    alert("Hello World!");
});

请注意,仅当您单击该按钮时,才会调用该alert

第二种情况的示例:https://jsfiddle.net/bwsps4b8/

document.getElementById("myBtn").addEventListener("click", alert("Hello World!"));

请注意,运行代码时会立即调用alert - 这不是您想要的。

你可以研究Javascript回调来进一步研究它,我在快速搜索中找到了这篇深入的文章:http://javascriptissexy.com/understand-javascript-callback-functions-and-use-them/

最新更新