匿名函数在Javascript中不起作用?(或者我可能只是没有获得匿名功能)

Gab*_*kel 2 javascript anonymous function

我是JavaScript(和编码)的新手,我正在通过Head First JavaScript这本书进行学习.从阅读开始,我认为匿名函数可能是一个参数,因为函数是值,但我想我可能有这个错误.

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

请告诉我,在我对匿名函数的理解,javascript中匿名函数的使用限制以及我们为什么要使用匿名函数时,我的错误在哪里.非常感谢.

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

<p id="demo"></p>

<script>

    function addIt(x, y) {
        return (x + y);
    }

    var m = 2;
    var n = 3;

    var total = addIt(function() { return (m * n); }, 1);

    document.getElementById("demo").innerHTML = total;

</script>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 6

你没有调用该函数addIt().要调用一个函数,你必须把()它放在后面.所以它应该是:

function addIt(x, y) {
    return (x() + y);
}
Run Code Online (Sandbox Code Playgroud)

如果要同时允许数字和函数作为参数,可以使用if测试.

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

<p id="demo"></p>

<script>

    function addIt(x, y) {
        if (typeof x == 'function') {
            x = x();
        }
        if (typeof y == 'function') {
            y = y();
        }
        return (x + y);
    }

    var m = 2;
    var n = 3;

    var total = addIt(function() { return (m * n); }, 1);

    document.getElementById("demo").innerHTML = total;

</script>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)