为什么JS总是返回'无法读取未定义的属性'推送'?

好吧,我看到了这个问题的解决方案,但我不清楚为什么它对我不起作用?我使用 socket.io


// 这是房间


var rooms = {

            "1": [],

            "2": [],

            "3": [],

            "4": [],

            "5": []

};

这是听众


socket.on('joinRoom', function (data) {


}

为什么


rooms[1].push(1); // work?

为什么


rooms["1"].push(1); // work?

为什么


rooms[data.room].push(1); // not work?

为什么


rooms["" + data.room].push(1) not work?    

为什么


rooms[data.room] = [];

rooms[data.room] = 1; // work?

data.room返回1;


波斯汪
浏览 92回答 1
1回答

慕标琳琳

即使条件不是那么清楚(特别是,不知道是什么data),以下可能有效的唯一原因:rooms[data.room] = [];rooms[data.room] = 1;同时这不会:rooms[data.room].push(1);是否data.room返回了尚未成为关键的东西rooms。尝试这样做rooms[data.room] = 1;,然后console.log(rooms);您很可能会找到 6 个而不是 5 个。顺便说一句,当您设置键/访问其值时,无需将您的键转换为字符串。它是自动转换的。它甚至可以转换对象(到 string [object Object])。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript