Проверка пустых значений — одна из базовых задач валидации входных данных, от которой зависит корректность дальнейшей обработки информации. В контексте Validator.js она реализуется через набор функций, ориентированных на определение отсутствия данных, их логической пустоты и различных пограничных состояний.
Понятие «пустое значение» в JavaScript не является строго формализованным. Один и тот же смысл может выражаться несколькими способами:
null — намеренное отсутствие значенияundefined — неопределённое состояние переменной""" "[]{} (в контексте отдельных проверок)Validator.js нормализует часть этих состояний, но важно учитывать, что разные функции библиотеки трактуют «пустоту» по-разному.
Функция isEmpty() является основным инструментом для
определения пустых значений.
Сигнатура:
isEmpty(input [, options])
Без дополнительных параметров функция рассматривает значение как пустое в следующих случаях:
null или undefinedlength === 0Примеры логики:
"" → пусто"text" → не пусто[] → пусто[1, 2] → не пустоnull → пустоundefined → пустоДля строк проверка основана на свойстве length. Однако
пробелы по умолчанию считаются значимыми символами:
" " → не пусто"" → пустоТакое поведение важно учитывать, поскольку визуально пустая строка может не проходить проверку.
Для более строгой семантики пустоты используется параметр:
isEmpty(value, { ignore_whitespace: true })
В этом режиме выполняется предварительное удаление пробельных символов, после чего производится проверка длины строки.
Поведение:
" " → пусто" a " → не пусто после trim"" → пустоЭто приближает проверку к пользовательскому восприятию «пустого поля».
Validator.js различает два состояния:
null трактуется как явное отсутствие значенияundefined трактуется как неопределённая переменнаяФункция isEmpty() возвращает true для обоих
случаев, однако при использовании специализированных функций поведение
может отличаться:
isNull(value) — строго проверяет
value === nullisUndefined(value) — строго проверяет
value === undefinedЭти функции не интерпретируют «пустоту» в широком смысле, а работают на уровне строгого равенства.
Для массивов используется свойство length. Поэтому:
[] считается пустым значением[0], [null] или [undefined] —
не пустые, так как длина массива больше нуляВажно, что содержимое массива не анализируется. Проверяется только факт наличия элементов.
Аналогичный подход применяется к строкоподобным объектам:
{ length: 0 }
Если объект содержит свойство length, он может быть
интерпретирован как пустой, независимо от внутренней структуры.
Обычные объекты {} не всегда корректно интерпретируются
как пустые значения, поскольку стандартная функция
isEmpty() Validator.js не предназначена для глубокой
проверки структуры объекта.
Поверхностные проверки:
{} может не считаться пустым в зависимости от контекста
использованияЭто создаёт важное ограничение: проверка пустоты не эквивалентна проверке «отсутствия данных в объекте».
При использовании Validator.js часто возникают ошибки, связанные с
неправильной интерпретацией результата isEmpty():
Пробелы как валидное значение Строка
" " не считается пустой без
ignore_whitespace
Ожидание глубокой проверки объекта
{ a: undefined } не анализируется как пустой
объект
Смешение null и пустой строки null
и "" логически различны, но часто используются
взаимозаменяемо
Проверка чисел через isEmpty Значение
0 не является пустым значением и не должно
интерпретироваться как отсутствие данных
В практических сценариях проверка пустоты редко используется изолированно. Она комбинируется с другими функциями:
isString,
isArray)isEmail, isURL)Типовой подход заключается в последовательной валидации:
null и undefinedisEmptyТакой порядок позволяет минимизировать неоднозначность входных данных и исключить ложные срабатывания.
В реальных приложениях понятие пустоты зависит от бизнес-логики. Validator.js предоставляет базовые механизмы, но не определяет семантику:
" " пустым значением0 как валидный вводПоэтому функция isEmpty() выступает как низкоуровневый
инструмент, требующий надстройки логики на уровне приложения.