Великий Путь Вебмастера от идеи до интернет бизнеса
Блог Романа Чуешова
Начни зарабатывать в интернете на создании сайтов и блогов

Полезная конструкция javascript void: особенности использования и замены

Доброго времени суток, читатели данной публикации и дорогие подписчики. Сегодня я решил рассказать вам о javascript void. На данный момент этот механизм все реже встречается в сайтостроении, так как многие современные сервисы стараются его заменить другими средствами.

Однако есть и те разработчики, которые до сих пор пользуются определенными конструкциями с void по некоторым причинам. Поэтому в текущей статье я объясню, что значит эта технология и для чего она используется, расскажу, какими особенностями и недостатками она обладает, а также приведу примеры. Приступим к делу!

Что обозначает оператор void?

Оператор void при запуске какой-либо функции или ссылки позволяет вычислить полученные значения, однако вернуть undefined (никак не null!). Чаще всего встречается выражение void (0) или void 0. Перевод на русский язык самого слова «void» означает «пустота». Именно поэтому в большинстве случаев оператор возвращает undefined.

Сам по себе void используется только в тех ситуациях, когда в программе необходимо произвести какие-то действия, не перегружающие страницу или не изменяющие объектов на ней.

В каких задачах используется void?

javascript void

На сегодняшний день данный механизм можно использовать в трех направлениях:

  • Вместо значения undefined;
  • Для создания букмарклетов;
  • Для ссылок, которые выполняют некий js-код.

Разберем каждый из вариантов отдельно.

Замена стандартного значения выражением void (0)

Данная команда обладает одним преимуществом, поэтому так часто используется в некоторых проектах: ее значение нельзя переопределить, в то время как undefined может быть не только переопределено, а еще и затерто по ходу выполнения команд в коде.

В подтверждение этого я прикрепил небольшое приложение.

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>undefined</title> 
<script type="text/javascript"> 
function sayHi(undefined) { return undefined; }
</script> 
</head> 
<body> 
<p><a href="javascript:sayHi('hello')">Поприветствуй пользователя, нажми на ссылку. </a></p> 
</body> 
</html>

В результате в диалоговое оно будет выведено слово «hello». Это несмотря на то, что возвращался другой параметр.

В следующей программной реализации я показал, как можно исправить прошлую ситуацию.

956d900c1bf15a199c018bb981e3756f001

Изменилось всего лишь возвращаемое значение функцией, однако веб-страница не перегружается. Если же попытаться переопределить оператор — var void = undefined или var void = ‘hi!’ – то появится сообщение об ошибке.

Букмарклеты

Букмарклет – это небольшой скрипт, который обычно сохраняется в браузере как вкладка.

Для его оформления используется протокол

<a href="javascript:...">

Сам по себе букмарклет не должен возвращать каких-либо значений. Поэтому для того чтобы избежать обновления веб-страницы и запретить переход по ссылкам, используется void оператор.

Так, при запуске этого примера контент на текущей странице обновится:

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>undefined</title> 
<script type="text/javascript"> 
function sayHi(undefined) { return void(0); }
</script> 
</head> 
<body> 
<p><a href="javascript:sayHi('hello')">Поприветствуй пользователя, нажми на ссылку. </a></p> 
</body> 
</html>

Чтобы это запретить, нужно перед свойством window.location.href дописать операцию void.

Есть и альтернативное решение – открыть ссылку в новой вкладке. Это реализовывается строкой:

window.open ('https://www.w3.org/')

Ссылки, которые выполняют js-код

Очень редко, однако все-таки иногда встречаются программы, в которых анкоры, которые внедрили в веб-приложения, запускают js-функцию. Проблем не возникает, если функция возвращает void.

Однако если же после вызова функции она возвращает какое-то значение, стоит принять меры для предотвращения изменения контента веб-страницы. И опять-таки можно воспользоваться оператором void.

Несколько полезных советов

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

Так, например, пользователи, у которых отключен js, через протокол так и не смогут ознакомиться с информацией, размещенной по ссылке.

На этом я с вами прощаюсь. Не забывайте подписываться на мой блог и делиться ссылкой на него с коллегами и друзьями. Пока-пока!

С уважением, Роман Чуешов

Прочитано: 1499 раз
Этот блог уже читают
читай и ты!
Оставить коментарий
:p :-p 8) 8-) :lol: =( :( :-( :8 ;) ;-) :(( :o:
  • Зоя

    Здравствуйте, Роман! Можете по-русски просто объяснить, как бороться с этой ситуацией, когда невозможно ввести данные из-за этой дури? Куда нажать, чтобы вводимые данные могли быть приняты?

    28.10.2018 в 21:00