#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
метода.