在函数中调用函数表达式。。。JavaScript

在函数中调用函数表达式。。。JavaScript,javascript,function,expression,Javascript,Function,Expression,我在理解为什么函数表达式(在另一个函数中)仅调用以下源代码中的警报命令时遇到问题 请用初学者的语言向我解释。向每一位做出贡献的人表示感谢 var parkRides = [ ["Birch Bumpers", 40], ["Pines Plunge", 55], ["Cedar Coaster", 20], ["Ferris Wheel of First", 90] ]; var fastPassQueue = ["Cedar Coaster", "Pines Plunge",

我在理解为什么函数表达式(在另一个函数中)仅调用以下源代码中的警报命令时遇到问题

请用初学者的语言向我解释。向每一位做出贡献的人表示感谢

    var parkRides = [ ["Birch Bumpers", 40], ["Pines Plunge", 55], ["Cedar Coaster", 20], ["Ferris Wheel of First", 90] ];

    var fastPassQueue = ["Cedar Coaster", "Pines Plunge", "Birch Bumpers", "Pines Plunge"];

    function buildTicket (allRides, passRides, pick) 
    {
        if(passRides[0] == pick)
        {
            var pass = passRides.shift();
            // Why does the alert command have to be put inside a function expression?  Why do we even need a function expression? 
            return function() 
            {
                alert("Quick, you have a fast pass to " + pass);
            };
        }

        else
        {
            for (var i = 0; i < allRides.length; i++)
            {
                if(allRides[i][0] === pick)
                {
                    // Why is this function being declared again?   
                    return function () 
                    {
                        alert("A ticket is printing for " + pick + "!\n" + "Your wait time is about " + allRides[i][1] + " minutes.");    
                    };
                }
            }
        }
    }
var parkRides=[[“桦树保险杠”,40],“松树跳水”,55],“雪松过山车”,20],“第一摩天轮”,90];
var fastPassQueue=[“雪松过山车”、“松树跳水”、“桦树保险杠”、“松树跳水”];
功能构建票证(所有乘车、乘车、提货)
{
if(通行证[0]==拾取)
{
var pass=passRides.shift();
//为什么警报命令必须放在函数表达式中?为什么我们甚至需要函数表达式?
返回函数()
{
警报(“快速,您有一个快速通行证到”+通行证);
};
}
其他的
{
对于(var i=0;i
函数
buildTicket
返回一个函数,当您调用该函数时,它将提示结果。您可以这样使用它:

// call the function
var f = buildTicket(x, y, z);

// display the result
f();

函数
buildTicket
返回一个函数,当您调用该函数时,它将提示结果。您可以这样使用它:

// call the function
var f = buildTicket(x, y, z);

// display the result
f();

函数
buildTicket
返回一个函数,当您调用该函数时,它将提示结果。您可以这样使用它:

// call the function
var f = buildTicket(x, y, z);

// display the result
f();

函数
buildTicket
返回一个函数,当您调用该函数时,它将提示结果。您可以这样使用它:

// call the function
var f = buildTicket(x, y, z);

// display the result
f();


你在问什么?在第一种情况下,变量
i
未定义,因此它将返回一个错误…哎呀!我现在编辑了源代码。请看一看,伊恩。这意味着他想返回一个函数,其中有一个警报命令。对于那些有用的东西,我不能说,因为我看不到上下文。如果你不把它放在函数中,区别在于它会通过执行buildticket函数直接发出警报,就像它在这里不会发出警报一样,它只会返回一个函数来利用Thorsten的注释,以便真正掌握这一点,您需要了解JavaScript中的函数可以返回另一个函数,该函数可以访问创建它的函数中的数据。这一概念被称为“终结”
buildTicket
用于创建函数,这些函数会触发包含循环中每个项目特定信息的警报消息。关键是函数表达式不会被调用,而是
return
ed。我们不知道为什么需要这样做。您在问什么?在第一种情况下,变量
i
未定义,因此它将返回一个错误…哎呀!我现在编辑了源代码。请看一看,伊恩。这意味着他想返回一个函数,其中有一个警报命令。对于那些有用的东西,我不能说,因为我看不到上下文。如果你不把它放在函数中,区别在于它会通过执行buildticket函数直接发出警报,就像它在这里不会发出警报一样,它只会返回一个函数来利用Thorsten的注释,以便真正掌握这一点,您需要了解JavaScript中的函数可以返回另一个函数,该函数可以访问创建它的函数中的数据。这一概念被称为“终结”
buildTicket
用于创建函数,这些函数会触发包含循环中每个项目特定信息的警报消息。关键是函数表达式不会被调用,而是
return
ed。我们不知道为什么需要这样做。您在问什么?在第一种情况下,变量
i
未定义,因此它将返回一个错误…哎呀!我现在编辑了源代码。请看一看,伊恩。这意味着他想返回一个函数,其中有一个警报命令。对于那些有用的东西,我不能说,因为我看不到上下文。如果你不把它放在函数中,区别在于它会通过执行buildticket函数直接发出警报,就像它在这里不会发出警报一样,它只会返回一个函数来利用Thorsten的注释,以便真正掌握这一点,您需要了解JavaScript中的函数可以返回另一个函数,该函数可以访问创建它的函数中的数据。这一概念被称为“终结”
buildTicket
用于创建函数,这些函数会触发包含循环中每个项目特定信息的警报消息。关键是函数表达式不会被调用,而是
return
ed。我们不知道为什么需要这样做。您在问什么?在第一种情况下,变量
i
未定义,因此它将返回一个错误…哎呀!我现在编辑了源代码。请看一看,伊恩。这意味着他想返回一个函数,其中有一个警报命令。对于那些有用的东西,我不能说,因为我看不到上下文。如果你不把它放在函数中,区别在于它会通过执行buildticket函数直接发出警报,就像它在这里不会发出警报一样,它只会返回一个函数来利用Thorsten的注释,以便真正掌握这一点,您需要了解JavaScript中的函数可以返回另一个函数,该函数可以访问创建它的函数中的数据。这一概念被称为“终结”
buildTicket
用于创建包含以下信息的火灾警报消息的函数