Ссылка на элемент никогда не будет выглядеть «ложной», поэтому отказ от явной проверки нулевой точки безопасен.
Javascript будет обрабатывать ссылки на некоторые значения в булевом контексте как false
: undefined, null, numeric zero и NaN
и пустые строки. Но то, что возвращает getElementById
, будет либо ссылкой на элемент, либо нулевым. Таким образом, если элемент находится в DOM, возвращаемое значение будет ссылкой на объект, а все ссылки на объекты - true
в тесте if()
. Если элемент не в DOM, то возвращаемое значение будет null
, а null
всегда false
в тесте if()
.
Это безвредно включать сравнение, но лично я предпочитаю держать биты коды, которые ничего не делают, потому что я полагаю, каждый раз, когда мой палец ударяется клавиатурами я мог бы быть введением ошибки :)
Примечания что те, с помощью JQuery должен не это сделать:
if ($('#something')) { /* ... */ }
, потому что функция JQuery всегда будет возвращать что-то «truthy» — даже если элемент не найден, JQuery возвращает ссылку на объект. Вместо этого:
if ($('#something').length) { /* ... */ }
редактировать —, чтобы проверить значение элемента, нет, вы не можете сделать это в то же время, как вы проверяете для существования самого элемента непосредственно DOM. Опять же, большинство структур делают это относительно простым и чистым, как другие отметили в своих ответах.
Существует также много хорошей информации в этой должности. (Но я предпочитаю, чтобы всегда проверять TYPEOF по привычке.) – Andir
Проверка «TYPEOF» в данном случае полностью бесполезно, потому что возвращаемое значение из 'getElementById' всегда будет типом« объекта », даже если оно равно null. – Pointy
Для меня весь смысл jquery в том, что вам не понадобится «if». Просто селектор jquery. – NimChimpsky