Есть пустой объект:
var testObj = {};
Допустим, где-то у себя в коде я пытаюсь проверить есть ли у этого объекта какое-то свойство:
console.log(typeof testObj.test); // undefined
Я получу undefined
, его нет, всё хорошо.
НО, если я пойду дальше и вызову
console.log(typeof testObj.test.var);
Я получу ошибку Uncaught TypeError: Cannot read property 'var' of undefined
.
Почему Javascript не скажет мне так же undefined
? Он скажет только в том случае, если внутри testObj
, я определю test
.
Получается, что объекты должны иметь определенную структуру? Но как быть, если я получаю от сервера разные json данные, с произвольной структурой. Я запишу эти данные в объект. Начну проверять, каких-то данных не окажется и Javascript выдаст ошибку.
Как мне сделать так, чтобы я смог написать, что-то вроде(при условии что testObj пустой объект):
if(testObj.test.var === "OK"){
console.log("ok!")
}
Потому что так описано в спецификации оператора typeof
.
Как мне сделать так, чтобы я смог написать, что-то вроде(при условии что testObj пустой объект):
Только добавив проверки вручную:
if(testObj && testObj.test && testObj.test.var === "OK"){
console.log("ok!")
}
В этом случае объект существует и у него есть свойство, значение которого undefined
:
console.log(typeof testObj.test);
А в этом,
console.log(typeof testObj.test.var);
транслятор не может присвоить свойство и, соответственно, получить его значение потому что объекта, к которому вы пытаетесь обратиться не существует, о чем транслятор и говорит явно - Cannot read property 'var' of undefined
(Не могу получить свойство var
у undefined).
Виртуальный выделенный сервер (VDS) становится отличным выбором
Нужно при загрузке страницы в iframe воспроизводить звуковой файлНа ПК всё работает, на мобильных устройствах (Chrome, Safari) звука нет
Когда я прошу getBoundingClientRect у img то left right top bottom возвращаются некорректные данные то есть при движении картинки в право left right уменьшаются (тоже...
Передо мной вот такая задача создать динамический меню на Angular 7У меня вот такой JSON
подскажите как повернуть маркер в leaflet js в зависимости от стартовой точки и конечной точки? Использую ext js