2013-12-06 5 views
0

Это мой кодnode.js переменную неопределенную ошибку после использования TypeOf

if((typeof session) !== undefined && (typeof session.username) !== undefined){ 
     data = session.username+" online"; 
     io.sockets.emit('update_common_message',data); 

     socketsOfClients[session.username].push(socket.id); 
    } 

Я получаю ошибку

TypeError: Cannot read property 'username' of undefined 

Я не знаю, что это случилось с моим кодом ...

ответ

2

typeof возвращает строку, так что вы должны проверить против строки тоже:

if ((typeof session) !== 'undefined' ...) 
+0

+1 Ты был быстрее. –

+0

@ Qntm хе-хе, извините;) – robertklep

1

Думаю, этого было бы достаточно, тоже выглядит чище.

if (session && session.username) { 
    data = session.username + " online"; 
    io.sockets.emit('update_common_message', data); 

    socketsOfClients[session.username].push(socket.id); 
} 
+0

Hi свою работу ... – balaphp

+0

так что typeof не рекомендуется использовать для проверки, доступна ли переменная или объект или нет? – balaphp

+0

Вы также можете использовать 'typeof'. Попробуйте 'if (typeof session! == 'undefined' && typeof session.username! == 'undefined') {// ваш код}' – vmx

1

Ваша проблема заключается в том, что typeof возвращает строку:

if((typeof session) !== 'undefined' && (typeof session.username) !== 'undefined'){ 
    // ... 
} 
Смежные вопросы