Ссылка на элемент никогда не будет выглядеть «ложной», поэтому исключение явной проверки нуля безопасно.
Javascript будет обрабатывать ссылки на некоторые значения в логическом контексте как false
: undefined, null, ноль и NaN
и пустые строки.Но то, что возвращает getElementById
, будет либо ссылкой на элемент, либо нулевым.Таким образом, если элемент находится в DOM, возвращаемое значение будет ссылкой на объект, а все ссылки на объекты будут true
в тесте if ()
.Если элемент является , а не в DOM, возвращаемое значение будет null
, а null
всегда будет false
в тесте if ()
.
Включать безвредносравнение, но лично я предпочитаю не пускать фрагменты кода, которые ничего не делают, потому что я думаю, что каждый раз, когда мой палец касается клавиатуры, я могу представить ошибку:)
Обратите внимание, что те, кто использует jQuery, должны не сделать это:
if ($('#something')) { /* ... */ }
, потому что функция jQuery всегда будет возвращать что-то "правдивое" - даже если элемент не найден, jQuery возвращает ссылку на объект.Вместо этого:
if ($('#something').length) { /* ... */ }
edit - что касается проверки значения элемента, нет, вы не можете сделать это одновременно спроверка существования самого элемента непосредственно с помощью методов DOM.Опять же, большинство структур делают это относительно простым и чистым, как другие отметили в своих ответах.