Задать вопрос

Что некошерного в проверке if (!item.x)?

Пробегался по диагонали по: stackoverflow.com/questions/135448/how-do-i-check-... но остался неясным вопрос.

Есть несколько способов проверить что в объекте var item = { foo: 'bar' } нету ключа x:
if (!item.x)
if (!item['x'])
if (typeof item['x'] === 'undefined')
if (!('x' in item)) // кошерно
if (!item.hasOwnProperty('x')) // кошерно (плюс исключает наследуемые x)

А что не так с первыми двумя. Есть браузеры которые сгенерируют нотис, либо же это может возвратить что-то неожиданное, и что это за возможные сюрпризы?
  • Вопрос задан
  • 2689 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Решения вопроса 1
v_decadence
@v_decadence
Если item.x равно 0, пустой строке, false или ещё чему-то, что приводится к false, условие даст !false == true, хотя ключ x на самом деле есть.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы