Функции второго аргумента передаются как условные? - PullRequest
0 голосов
/ 05 ноября 2018

Задача функции - устанавливать и очищать справочные сообщения в поле формы, используя встроенные классы CSS. Мой вопрос: почему мне нужно проверить аргумент helpText внутри функции, чтобы он не был равен нулю? Аргумент связан идентификатором, который он разделяет с тегом span, так зачем нужна проверка?

<input id="phone" name="phone" type="text" size="12" onblur="validateNonEmpty"(this, document.getElementById('phone_help'))" />

<span id="phone_help" class="help"></span>

function validateNonEmpty(inputField, helpText) {

// See if the input value contains any text

if (inputField.value.length == 0) {

// The data is invalid, so set the help message

if (helpText != null)

    helpText.innerHTML = "Please enter a value.";

return false;

}

else {

    // The data is OK, so clear the help message

    if (helpText != null)

        helpText.innerHTML = "";

    return true;    
}


}

1 Ответ

0 голосов
/ 05 ноября 2018

Когда вы определяете функцию, вы создаете фрагмент кода, который может выполняться несколько раз в разных контекстах. В JavaScript при вызове функции не гарантируется предоставление необходимых аргументов, а также не гарантируется, что они имеют правильный тип. Строгое сравнение с null в вашем коде гарантирует, что аргумент helpText был указан при вызове функции. Это всего лишь механизм безопасности, помогающий предотвратить ошибку разработчика.

В крупномасштабных приложениях, написанных группами людей, вы, вероятно, будете видеть, что подобные проверки выполняются постоянно. Написание безопасного кода означает рассмотрение всех возможных сбоев, что означает очень вероятную вероятность того, что кто-то другой, использующий ваш код, может использовать его неправильно. Часто этот «кто-то другой» - это вы из будущего, с недоумением смотрящие на глупости, которые вы написали на прошлой неделе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...