Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在循环和方法内部调用函数不会';不需要()?_Javascript - Fatal编程技术网

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