Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.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,我试图将functionaverage作为参数传递给另一个functiongetAverage。然后,在体内,我试着称之为功能平均。当我调用它时,它总是告诉我函数未定义。为什么? var average = function(scores) { var total = 0; var i = 0; while (i < scores.length) { total = total + scores[i]; i++; } return total / scores.length; };

我试图将functionaverage作为参数传递给另一个functiongetAverage。然后,在体内,我试着称之为功能平均。当我调用它时,它总是告诉我函数未定义。为什么?

var average = function(scores) {
var total = 0;
var i = 0;
while (i < scores.length) {
  total = total + scores[i];
  i++;
}
return total / scores.length;
};

gradebook.getAverage = function(name, average) {
if (name === "Joseph") { average(gradebook.Joseph.testScores); }
};
错误:未定义不是函数-参考averagegradebook

谢谢

这一行:

 gradebook.getAverage = function(name, average) {
   if (name === "Joseph") { average(gradebook.Joseph.testScores); }
 };
正在声明一个将包含名为average的参数的函数

您使用的不是外部范围中定义的平均值函数,而是为内部范围定义一个新的平均值参数,该参数隐藏了以前的声明

只需删除参数名称即可使用外部范围中定义的平均值:

 gradebook.getAverage = function(name) {
   if (name === "Joseph") { average(gradebook.Joseph.testScores); }
 };

你怎么称呼gradebook.getAverage?你一定是给它传递了错误的参数。哇,谢谢。就这样。我的规范只是用一个参数来调用它@你的建议是错误的。函数不需要有名称实际上比==好注意使用===实际上是一个很好的实践,==会匹配像1=='1'这样的东西,这不是你通常想要的答案这似乎是正确的答案,但问题并没有说明函数是如何被调用的。所以对这个问题投反对票。。。不是答案。通过查看示例很容易看出错误所在。谢谢,yeh。在我得到关于堆栈溢出的第一个答案后,这件事对我来说变得非常明显,但要想弄明白这件事却让我发疯!我没有投反对票,我也没有投反对票。如果每个人没有投反对票,就让他们在这里发表评论。我打赌,如果我们等得够久的话,我们会判他有罪的。