背景: 编写代码为passengers数组里的每个对象提供饮料服务。
问题:浏览器报错:函数createDrinkOrder里passenger.ticket的"ticket" undefined is not an object。为何ticket属性无法被识别?望指明。
//声明数组(passengers)
var passengers=
[ {name:"Jane",paid:true,ticket:"coach"},
{name:"Dr.Evel",paid:true,ticket:"firstclass"}];
//调用函数为一位乘客提供饮料服务(serveCustomer)
function serveCustomer(passenger){
var getDrinkOrderFunction=CreateDrinkOrder(passenger);
getDrinkOrderFunction();
//函数声明提供饮料的函数(CreateDrinkOrder)
function CreateDrinkOrder(passenger){
var orderFunction;
if (passenger.ticket==="firstclass"){
orderFunction=function(){
alert("Would you like a cocktail or wine?");
}
}else{
orderFunction=function(){
alert("Your choice is cola or water.");
}
}
return orderFunction;
}
//函数申明为每一个数组里的对象提供服务(servePassengers)
function servePassengers(passengers){
for(var i=0;i<passengers.length;i++);{
serveCustomer(passengers[i]);
}
}
servePassengers(passengers);
for循环语句后多了个分号,导致for循环没有语句体,空循环完毕后执行serveCustomer(passengers[i]);,此时i为2数组越界导致传入serveCustomer的参数为undefined,所以报错了。
还有你的代码serveCustomer少了结束的右大括号
有帮助或启发麻烦点个采纳【本回答右上角】,谢谢~~
<script>//声明数组(passengers)
var passengers =
[{ name: "Jane", paid: true, ticket: "coach" },
{ name: "Dr.Evel", paid: true, ticket: "firstclass" }];
//调用函数为一位乘客提供饮料服务(serveCustomer)
function serveCustomer(passenger) {
var getDrinkOrderFunction = CreateDrinkOrder(passenger);
getDrinkOrderFunction();
//函数声明提供饮料的函数(CreateDrinkOrder)
function CreateDrinkOrder(passenger) {
var orderFunction;
if (passenger.ticket === "firstclass") {
orderFunction = function () {
alert("Would you like a cocktail or wine?");
}
} else {
orderFunction = function () {
alert("Your choice is cola or water.");
}
}
return orderFunction;
}
}
//函数申明为每一个数组里的对象提供服务(servePassengers)
function servePassengers(passengers) {
for (var i = 0; i < passengers.length; i++) {
serveCustomer(passengers[i]);
}
}
servePassengers(passengers);
</script>
眼拙了。
页面中有多处代码问题。