我正在學習如何從JavaScript中的其他函數返回函數。這裏是我的代碼工作:從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」功能:當我註釋掉第2行中的這一功能,並取消對3號線替代,什麼也沒有發生在控制檯了。爲什麼我必須聲明一個變量然後爲它分配一個函數,然後才調用這個變量才能使這個代碼工作?謝謝!
你的第三行是返回一個函數,你只是沒有執行它。嘗試'createDrinkOrder(passenger)()'。 –
您嘗試調用的函數在您執行創建函數之前不存在 – Abdul