JavaScript — В чем смысл условия в этом операторе if: if(document.getElementById)

#javascript

#javascript

Вопрос:

Я пытаюсь понять некоторый код, и я не понимаю смысла упомянутого условия в операторе if . Учитывает ли оператор if значение этого условия true при каждом document.getElementById запуске в коде?

 if(document.getElementById) {
    window.alert = function(txt) {
        createCustomAlert(txt);
    }
}
  

И разве это не getElementById метод с обязательным строковым параметром?

Комментарии:

1. Зависит от того, что createCustomAlert делает. Но getElementById поддерживается практически любым браузером, так что, вероятно, это бесполезно (или просто ошибка) в любом случае.

2. Теперь, когда я думаю об этом, это может быть проверка, запущено ли оно внутри браузера.

3. » А разве getElementById не является методом с обязательным строковым параметром? » Да, это так, но в условии автор не вызывает метод, они только ссылаются на него.

Ответ №1:

Вероятно, он проверяет, выполняется ли код в браузере или в консоли (например, в узле).

Если он запущен в браузере, он изменяет alert метод, чтобы использовать его пользовательское оповещение.

Обновление: как отметил Джаред Смит, document должно быть определено перед выполнением if инструкции.

Комментарии:

1. Возможно, стоит отметить, что это плохая проверка того, работаете ли вы в браузере: если вы не определите document в node, вы получите ReferenceError вместо false . Тогда есть рабочие…

2. Это правда, теперь я еще больше запутался в этом коде

3. Лучшей проверкой для этого конкретного использования было бы if (typeof alert === 'function' amp;amp; alert !== myCustomAlert) alert = myCustomAlert;

Ответ №2:

Он фактически проверяет, выполняется ли код в браузере или нет.

Если он возвращает true, что может быть true в вашем случае, то он заменяет метод alert на использование этого пользовательского createCustomAlert метода.