匿名函数不';你不能用Javascript吗?(或者可能我只是不获取匿名函数)

匿名函数不';你不能用Javascript吗?(或者可能我只是不获取匿名函数),javascript,function,anonymous,Javascript,Function,Anonymous,我对JavaScript(和编码)非常陌生,我正在学习《头先JavaScript》。通过阅读,我认为匿名函数可能是一个参数,因为函数是值,但我认为我可能有这个错误 根据我的想法,下面的代码应该输出7。相反,它输出,function(){return(m*n);}1我用字符串做过类似的事情,根据我的假设,它们也没有按预期进行处理 请告诉我,在我对匿名函数的理解中,哪里出了问题,在javascript中使用匿名函数的限制,以及为什么我们希望使用匿名函数。非常感谢 函数加法(x,y){ 返回(x

我对JavaScript(和编码)非常陌生,我正在学习《头先JavaScript》。通过阅读,我认为匿名函数可能是一个参数,因为函数是值,但我认为我可能有这个错误

根据我的想法,下面的代码应该输出
7
。相反,它输出,
function(){return(m*n);}1
我用字符串做过类似的事情,根据我的假设,它们也没有按预期进行处理

请告诉我,在我对匿名函数的理解中,哪里出了问题,在javascript中使用匿名函数的限制,以及为什么我们希望使用匿名函数。非常感谢


函数加法(x,y){ 返回(x+y); } var m=2; var n=3; var total=addIt(函数(){return(m*n);},1); document.getElementById(“demo”).innerHTML=total;
您没有在
addIt()中调用函数。要调用函数,必须在函数后面加上
()
。因此,它应该是:

function addIt(x, y) {
    return (x() + y);
}
如果希望同时允许数字和函数作为参数,可以使用
If
进行测试


函数加法(x,y){ if(typeof x=='function'){ x=x(); } 如果(y的类型=='函数'){ y=y(); } 返回(x+y); } var m=2; var n=3; var total=addIt(函数(){return(m*n);},1); document.getElementById(“demo”).innerHTML=total;
正如Barmar正确指出的那样,问题在于您没有调用匿名函数,因此您在对函数值而不是数值(函数的返回值)进行加法

我对匿名函数的理解哪里出了问题

你真的没有。只需知道,当一个匿名函数被分配给一个变量时,它的使用方式与普通函数几乎相同(尽管存在细微的差异)

javascript中匿名函数的使用限制

适用于任何其他类型的值的相同限制。您可以将其作为参数传递给函数,将其保存在变量中,等等。当然,作为一个函数,您通常最终必须调用它以获取其返回值

为什么我们要使用匿名函数


,主要是。此外,重要的函数,如期望函数作为参数,并且能够使一个函数使用一次,然后再也不用了,这很有帮助。

Wow。。!所以addIt必须在x参数中预测函数?如果您想同时允许函数和普通数字作为参数,它可以使用
if(typeof x=='function')
。您能不能不改变
var total=addIt(function(){return(m*n);},1)
to
var-total=addIt(函数(){return(m*n);}(),1)不需要支持将函数传递到
addIt
?可以,但函数的意义是什么?您不妨编写
addIt(m*n,1)
。无论如何,他正在努力学习匿名函数是如何工作的,这并不是一个实际的应用程序。非常感谢。这很有帮助。整个概念对我来说更有意义