Javascript 在循环和方法内部调用函数不会';不需要()?
为什么不需要使用Javascript 在循环和方法内部调用函数不会';不需要()?,javascript,Javascript,为什么不需要使用()在“for”循环或.addEventListener()方法中调用函数?例如: function activitiesReset() {activitiesLegend.style = ''; } for (var i=0; i<checkboxes.length; i++) { checkboxes[i].addEventListener('change', activitiesReset); } 函数活动重置() {activitiesLegen
()
在“for”循环或.addEventListener()方法中调用函数?例如:
function activitiesReset()
{activitiesLegend.style = '';
}
for (var i=0; i<checkboxes.length; i++) {
checkboxes[i].addEventListener('change', activitiesReset);
}
函数活动重置()
{activitiesLegend.style='';
}
对于(var i=0;i复选框[i]。addEventListener('change',activitiesReset)
未调用activitiesReset
。它将activitiesReset
作为参数传递。activitiesReset
本身是一个函数;activitiesReset()
是对函数的调用,计算其返回值。您希望将事件侦听器设置为函数,而不是未定义的(这是调用函数的结果)
理解这一点的关键是JavaScript中的函数也是值,就像数字、字符串或对象一样(事实上,它们是一种特定的对象)
就像我将函数值传递到callFuncWithTwoParams
,您将函数值传递到addEventListener
。浏览器将记住该函数,并将其与change
事件关联,稍后再调用它。非常感谢。经过优雅的解释-我很惊讶我在2个月时不知道这一点很抱歉,发布了一个重复的问题-我先尝试了谷歌,但不知何故错过了。否决票压垮了我的灵魂,有一段时间我不再发帖了:/不要担心一次否决票;另外,如果你有一段时间没有来过这里,你也不会知道以前有人写过同一个问题的答案;我不知道自己,所以我回答。
var adderFuncValue = function(x, y) { return x + y; };
function multiplierFuncValue(x, y) { return x * y; };
function callFuncWithTwoParams(func, p1, p2) {
func(p1, p2);
}
callFuncWithTwoParams(adderFuncValue, 3, 5); // 8
callFuncWithTwoParams(multiplierFuncValue, 2, 3); // 6
var someFunc = adderFuncValue;
someFunc(7, 8); // 15