Отсутствие значения и значение undefined - раритет древнейших времен информационных технологий, но даже в современном мире у них есть место и значение. Далеко не всегда имеет смысл принимать решение. Иногда имеет объективный смысл отложить принятие решения на потом.
Исторический семантический момент
Само по себе void означает "никуда", "ничего не делать" или, по смыслу JavaScript void, - undefined.
Применением ключевого слова void прославился язык программирования С/С++ в большей степени, чем другие языки (тогда еще локального) программирования. Но не только С/С++ декларировал отсутствие результата действия (функции) как данное особого рода.
Теория и практика программирования всегда имели вариант значения "отсутствие значения", но мало какой язык по сей день имеет значение "откат" значения и "отмена" действия.
Судя по логике вещей, отсутствие результата тоже результат. Формально любой алгоритм обеспечивает целостный функционал и представление информации.
Современные реалии интернет-программирования
В современной интернет-практике HTML/CSS:
- код разметки;
- форма представления информации в конкретном применении;
- предмет анализа в том же конкретном применении.
Браузерный язык JavaScript:
- логика и события;
- алгоритм и функциональность;
- отсутствие истории изменений (данные) и отката действий (алгоритм).
Термин void сохранил свое неопределенное значение до сих пор. В контексте JavaScript void приводит к значению undefined.
Сам по себе вызов функционала происходит, действие выполняется, функция отрабатывает определенный результат, но в конечном итоге "официальным" результатом становится декларация отсутствия результата, то есть значение undefined.
Область компетенции void и undefined
Обычно JavaScript void и значение undefined применяются в ссылках <a href..., это частный вариант использования, при котором может быть выполнено действие, но браузеру будет известно обратное:
- Действие не выполнено.
- Продолжение за ним не должно следовать.
На самом деле сложность языка разметки HTML, его взаимосвязи с таблицами CSS и мощное развитие браузерного языка привели к обратному: JavaScript void 0, что значит или что не значит - браузера не касается.
Разработчик может вкладывать собственный смысл, иное понимание ситуации. Он может ориентировать алгоритм, приводящий к вызову JavaScript void на что угодно. У разработчика есть синтаксис и базовый смысл от браузерного языка, остальное зависит от решаемой задачи, области ее компетенции и логики диалога с посетителем веб-ресурса.
Блокировка действий браузера в том или ином элементе страницы веб-ресурса часто необходима без какой-либо видимой причины на том простом основании, что алгоритмы бывают весьма сложны, а пути выхода на элемент и действия посетителя очень трудно заранее предусмотреть.
Проще предусмотреть набор действий для ориентации в ситуации, но до того, как можно будет пустить алгоритм дальше - заблокировать работу браузера в том или ином направлении.