m0_54541457 2021-09-03 14:34 采纳率: 66.7%
浏览 398
已结题

js调用问题,在函数里调用对象里的属性为什么显示undefined is not an object?

背景: 编写代码为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);
  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2021-09-03 14:50
    关注

    for循环语句后多了个分号,导致for循环没有语句体,空循环完毕后执行serveCustomer(passengers[i]);,此时i为2数组越界导致传入serveCustomer的参数为undefined,所以报错了。

    还有你的代码serveCustomer少了结束的右大括号

    有帮助或启发麻烦点个采纳【本回答右上角】,谢谢~~

    img

    <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>
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月11日
  • 已采纳回答 9月3日
  • 创建了问题 9月3日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效