gpt4 book ai didi

javascript - 从 JavaScript 中的函数返回函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:52:30 26 4
gpt4 key购买 nike

我正在学习如何从 JavaScript 中的其他函数返回函数。这是我的有效代码:

var passengers = [
{ name: "Jane", ticket: "coach" },
{ name: "Evel", ticket: "firstclass" },
{ name: "John", ticket: "coach" },
{ name: "Bob", ticket: "premium"}
];

function createDrinkOrder(passenger) {
var orderFunction;
if (passenger.ticket === 'firstclass') {
orderFunction = function() {
console.log(passenger.name + ', would you like wine or cocktail?');
};
} else if (passenger.ticket === 'premium') {
orderFunction = function() {
console.log(passenger.name + ', would you like some wine?');
};
} else {
orderFunction = function() {
console.log(passenger.name + ', soda or water?');
};
}
return orderFunction;
}

function serveOnePassenger(passenger) {
var getDrinkOrderFunction = createDrinkOrder(passenger);
getDrinkOrderFunction();
// createDrinkOrder(passenger);
}

// General function to serve passengers:
function servePassengers(passengers) {
for (var i = 0; i < passengers.length; i++) {
serveOnePassenger(passengers[i]);
}
}

servePassengers(passengers);

我的问题是关于“serverOnePassenger”函数:当我注释掉此函数中的前两行并取消注释第三行时,控制台中不再发生任何事情。为什么我必须声明一个变量,然后为其分配一个函数,然后才调用这个 var 才能使这段代码工作?谢谢!

最佳答案

您必须同时调用 createDrinkOrder 和它创建的函数,试试这个

(createDrinkOrder(passenger))();

让我们一步一步来

  • createDrinkOrder(passenger) 调用返回匿名函数的 createDrinkOrder
  • (...)() 调用那个匿名函数

关于javascript - 从 JavaScript 中的函数返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41272121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com