2011-12-13 3 views
2

Возможно, кто-то может пролить свет на это.Javascript: typeof показывает 'object', затем null pointer throw

Я иногда получаю версию NPE от NPE, даже несмотря на то, что журнал показывает, что typeof для нарушающей переменной является «объектом».

Вот каротаж:

typeof myVar: object 
ERROR in main._getFolderCount(): TypeError: myVar is null 
console.error("ERROR in main._getFolderCount(): " + e); 

Вот код:

try{ 
    console.log('typeof myVar: ' + typeof myVar); 
    if (typeof myVar !== 'undefined' && typeof myVar !== 'null'){ 
    if (currentMsgsObj && currentMsgsObj.folderId == data[i].id && myVar.totalRows!=data[i].count) {   
     myVar.totalRows=data[i].count; 
    } 
    } else { 
    } 
    } catch (e) { 
    console.error("ERROR in main._getFolderCount(): " + e); 
    } 
} 

Таким образом, вы можете видеть, что каротаж показывает MYVAR является TypeOf «объект», а код, как представляется, передать «неопределенными/null ', а затем переходит к взорванному доступу при доступе к элементу myVar.

+2

Попробуйте выполнить регистрацию 'typeof null' ... –

ответ

3

null тип spec'd для возврата object при использовании оператора typeof.

+1

woah, узнал что-то. Я думал, что null ведет себя как неопределенный, и что === 'null' будет работать как === 'undefined'. Благодаря! – mtyson

2

В JavaScript, typeof null == 'object'.

Вы можете проверить, является ли что-то null с помощью ===:

if (blarg === null) ... 

Использование typeof blarg == 'null' никогда не будет работать.

Смежные вопросы