При проверке неопределенного значения я продолжаю получать ошибки, потому что значение неопределено. Как правильно проверить наличие неопределенных значений?

1

Код выглядит следующим образом:

if(typeof state.getId().stateId !== "undefined") {
   console.log("Not undefined");
} else { 
   console.log("Undefined");
}

Я продолжаю получать эту ошибку: TypeError: Не удается прочитать свойство stateId

Что я делаю неправильно?

Проблема в том, что state.getId() сам по себе не определен; и таким образом получить свойство stateId state.getId() было проблемой. Это не то же самое, что и другой вопрос, потому что a) не сразу стало ясно, что.getId(). StateId было свойством неопределенного.

Теги:

3 ответа

1
Лучший ответ

пытаться

if(!state || !state.getId() || typeof state.getId().stateId === "undefined") {
    console.log("Undefined");
} else {
    console.log("Not undefined");
}

Если какое-либо состояние или значение, возвращаемое вызовом getId, не определены, вы получите сообщение об ошибке. Короткое замыкание или тест поймают его и перестанут пытаться получить доступ к объекту на неопределенный, что является причиной вашей ошибки.

  • 0
    Эй, это был правильный ответ. Значение, возвращаемое из самого вызова, было неопределенным. Спасибо!
1

проверьте, state.getId() ли state.getId() правдиво, затем проверьте его свойство

   if (state.getId() && state.getId().stateId !== "undefined") { 
         console.log("Not undefined");
   } else {
         console.log("Undefined");
   }
  • 0
    Вполне возможно, что объект состояния - это то, что не определено и вызывает ошибку.
  • 0
    если состояние в undefined, вы получите сообщение об ошибке, что невозможно прочитать getId из undefined, поэтому функция вернет undefined, проверьте, есть ли у функции getId инструкция возврата @AdrianBrand
Показать ещё 1 комментарий
0

Проверьте, существует ли state, затем проверьте, что state.getId является функцией:

if (typeof state == "object" &&
    typeof state.getId == "function" ) {
   var id = state.getId();
   console.log("stateId=",id.stateId);
} else { 
   console.log("Undefined");
}

Для получения дополнительной информации см.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню