pset8; CS50; javascript;何时使用命名函数以及何时在回调中使用匿名函数
pset8; cs50; javascript; when to use a named function and when to use an anonymous function in callback
在 pset8 中,我想出了 2 种解决方案来在用户单击标记时显示信息 window。
google.maps.event.addListener(marker, 'click', function() {
showInfo(marker, articlesContent);
};
和
google.maps.event.addListener(marker, 'click', showInfo(marker, articlesContent));
为什么 former/latter 有效或无效?我的意思是 showInfo 不是一个函数吗? 那你为什么还要想出另一个匿名函数来调用另一个函数呢?
如果这是新手犯的错误,我深表歉意,但我是 Javascript 的新手,为了这个 pset 已经苦苦挣扎了好几天。如果有人能帮助我,我将不胜感激!
在第一种情况下,您将函数作为参数传递。在第二种情况下,您正在调用函数。
第一种情况的例子: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/
在 pset8 中,我想出了 2 种解决方案来在用户单击标记时显示信息 window。
google.maps.event.addListener(marker, 'click', function() {
showInfo(marker, articlesContent);
};
和
google.maps.event.addListener(marker, 'click', showInfo(marker, articlesContent));
为什么 former/latter 有效或无效?我的意思是 showInfo 不是一个函数吗? 那你为什么还要想出另一个匿名函数来调用另一个函数呢?
如果这是新手犯的错误,我深表歉意,但我是 Javascript 的新手,为了这个 pset 已经苦苦挣扎了好几天。如果有人能帮助我,我将不胜感激!
在第一种情况下,您将函数作为参数传递。在第二种情况下,您正在调用函数。
第一种情况的例子: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/