我不明白这是怎么回事 addItem()
及 removeItem()
调用时不带括号 addEventListener('click', addItem)
.
var addButton = document.getElementById('add');
addButton.addEventListener('click', addItem);
var removeButton = document.getElementById('remove');
removeButton.addEventListener('click', removeItem);
function addItem(){
console.log('Add Button clicked');
}
function removeItem(){
console.log('Remove Button clicked');
}
6条答案
按热度按时间yqkkidmi1#
因为在这方面,,
addItem
用作函数引用,而不是函数的返回值。如果您这样做:
然后
addItem
将立即执行,并且无论何时addButton
已单击,则返回的值为addItem
(这是undefined
)将被称为。这将导致错误,因为undefined
这不是一个函数。这里,你是说当我点击
addButton
,查找我传递的函数引用,并执行它。您也可以用两种不同的方式编写:
以上两种方法仍然会产生与原始代码相同的输出。
0kjbasz62#
这是因为您将函数作为参数/参数传递给
addEventListener()
方法。如果您添加了parathesis,函数将立即执行,而这不是您想要的。你在告诉警察addEventListener()
触发事件时要执行的函数。希望这有帮助。
5cnsuln73#
这是js的核心功能。你可以在这里读到。
函数是函数对象。在javascript中,任何非基元类型(未定义、null、boolean、number或string)的内容都是对象。javascript中的对象用途极其广泛。因此,我们甚至可以将一个函数作为参数传递给另一个函数
7vux5j2d4#
您正在附加一个事件侦听器,它将调用该函数。如果您在回调中添加父项,则会收到错误,因为您执行了该调用
bejyjqdl5#
如果没有括号,就不会真正调用函数。不带括号的函数名是对函数的引用。
x33g5p2x6#
第二个论点是
addEventlistener
方法函数。您可以在全局中定义函数,而无需在第二个参数addeventlistener中添加括号。