の問題が発生します。問題の原因を突き止めるのに時間がかかりましたが、なぜそれがそのように動作しているのだろうかと思います。同じ名前の変数を宣言すると、ソケットio
このコードを使用すると、プレーヤー、プレーヤー、ソケットの変数が定義されず、エラーが発生します。同じ名前を持つ変数の宣言を回避
var player = Player(socket.id, socket);
socket.on('joinHost', function(data) {
var gameID = data;
player.gameID=gameID;
var game = GAME_LIST[gameID];
game.players[socket.id]=player;
var players = game.players;
for (var p in players){
var player = players[p];
var socket = player.socket;
socket.emit('playerJoined');
}
});
は、それがすべて正常に動作します。
var player = Player(socket.id, socket);
socket.on('joinHost', function(data) {
var gameID = data;
player.gameID=gameID;
var game = GAME_LIST[gameID];
game.players[socket.id]=player;
var tempPlayers = game.players;
for (var p in tempPlayers){
var tempPlayer = tempPlayers[p];
var tempSocket = tempPlayer.socket;
tempSocket.emit('playerJoined');
}
});
私は最初のコードを実行したときの興味深い部分は、である、それは私がplayer.gameID=gameID
後にあるコードを削除した場合、プレイヤーが定義している間にラインplayer.gameID=gameID
でプレイヤーは、未定義であると言います。基本的に、player.gameID=gameID
の後のコードでは、プレイヤーは定義されませんでした。
これはどうしてですか?
ウムプレーヤーは、コンストラクタである:これはあなたのコードは同等ですが
巻き上げ呼ばれているのですか?もしそうなら、 'var player = new Player(socket.id、socket);' – magreenberg