在Javascript函数参数

时间:2016-06-06 03:02:56

标签: javascript

var sockets = [];

function findSocketByUID(uid){
  var index = findIndexByUID(uid);

  if(index == -1)  return null;
  return sockets[index];
}


socket.on('chat message', function(msg){
  if(msg.to == 'all'){
    io.emit('chat message', msg);
  }else{
    var socket_to = findSocketByUID(msg.to);
    if(socket_to){
      socket_to.emit("chat message", msg);
    }else{
      socket.broadcast.emit("chat message", msg);
    }
  }
});

嗨,这是我的Node.JS应用程序的一部分, 使用参数msg.to调用findSocketByUID,这是一个字符串值。 但为什么函数findSocketByUID中的参数uid未定义?如何正确调用findSocketByUID传递参数?

编辑: 我在这一行添加一个断点:

var socket_to = findSocketByUID(msg.to);

我的msg看起来像这样:

  

" {     "至" :" a27efd3f-ee63-413a-20ae-527419fab246",     "内容" :" giuh",     "时间" :" 2016-06-06T11:27:11Z",     "从" :" 683C2782-A575-4154-9F78-CAD6B74AB19D"   }"

1 个答案:

答案 0 :(得分:0)

编辑中显示的msg似乎是一个JSON字符串,而不是一个实际对象(它在大括号外面有引号)。字符串不会有.to属性。

您需要使用JSON.parse()将其转换为实际对象,以便您可以访问其属性。