Что такое javascript void 0
Перейти к содержимому

Что такое javascript void 0

  • автор:

void operator

The void operator evaluates the given expression and then returns undefined .

Try it

Syntax

Description

This operator allows evaluating expressions that produce a value into places where an expression that evaluates to undefined is desired.

The void operator is often used merely to obtain the undefined primitive value, usually using void(0) (which is equivalent to void 0 ). In these cases, the global variable undefined can be used.

It should be noted that the precedence of the void operator should be taken into account and that parentheses can help clarify the resolution of the expression following the void operator:

Examples

Immediately Invoked Function Expressions

When using an immediately-invoked function expression, the function keyword cannot be at the immediate start of the statement, because that would be parsed as a function declaration, and would generate a syntax error when the parentheses representing invocation is reached — if the function is unnamed, it would immediately be a syntax error if the function is parsed as a declaration.

In order for the function to be parsed as an expression, the function keyword has to appear at a position that only accepts expressions, not statements. This can be achieved be prefixing the keyword with a unary operator, which only accepts expressions as operands. Function invocation has higher precedence than unary operators, so it will be executed first. Its return value (which is almost always undefined ) will be passed to the unary operator and then immediately discarded.

Of all the unary operators, void offers the best semantic, because it clearly signals that the return value of the function invocation should be discarded.

This is a bit longer than wrapping the function expression in parentheses, which has the same effect of forcing the function keyword to be parsed as the start of an expression instead of a statement.

JavaScript URIs

When a browser follows a javascript: URI, it evaluates the code in the URI and then replaces the contents of the page with the returned value, unless the returned value is undefined . The void operator can be used to return undefined . For example:

Note: javascript: pseudo protocol is discouraged over other alternatives, such as unobtrusive event handlers.

Non-leaking Arrow Functions

Arrow functions introduce a short-hand braceless syntax that returns an expression. This can cause unintended side effects by returning the result of a function call that previously returned nothing. To be safe, when the return value of a function is not intended to be used, it can be passed to the void operator to ensure that (for example) changing APIs do not cause arrow functions’ behaviors to change.

This ensures the return value of doSomething changing from undefined to true will not change the behavior of this code.

Javascript:void(0): что значит, какие задачи решает?

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

В этой статье мы кратко расскажем про конструкцию javascript:void(0) — что это, как использовать и актуален ли этот метод работы с данными. Если вы хотите подробнее познакомиться с этой темой и программированием в целом, рекомендуем курсы JS-разработчика.

Что такое void(0)

Для начала разберемся, что означает английское слово “void”. В переводе на русский получается “пустота”, “пустое пространство”. Это ключевое слово работает в соответствии со своим названием — вынуждает функцию вернуть пустое значение, т. е. undefined.

А теперь рассмотрим конструкцию javascript:void(0) по частям. Первая половина строки до двоеточия называется псевдо-URL. Когда браузер получает такое значение в качестве значения атрибута href, то интерпретирует строку не как ссылку на другую страницу, а в качестве JS-кода, который нужно выполнить.

К примеру, программист написал:

Тогда пользователь после выбора ссылки увидит:

Результат без использования void(0)

Результат без использования void(0)

А оператор void вычисляет переданное в него выражение и всегда возвращает значение undefined. Не путайте void с null. Последний представляет собой маркер, указывающий на отсутствие объекта, к которому обращается функция. А undefined — это отсутствие значения.

Хотя внутри void выполняется операция сложения, на выходе программист видит, что результат не определен. На примере этого кода также можно понять, что операторы в скобках не имеют значения, т. к. результатом в любом случае будет undefined. Это делает void(0) универсальным решением.

Еще один блок кода:

Вывод

На всякий случай проверим тип данных:

Какой в этом смысл?

Void позволяет внедрить в ссылку код, который не перезагрузит страницу и не изменит ее содержание. Благодаря ему разработчик может улучшить юзабилити и избавиться от лишних загрузок, а также запретить переход пользователя по ссылке.

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

Рассмотрим три распространенных способа использования void.

Замена значений новым выражением

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

В результате программист увидит в диалоговом окне слово “Привет”, хотя изначально возвращался другой параметр.

Создание букмарклетов

Так называют фрагменты javascript-код, которые сохраняются в качестве URL-адреса закладки в веб-браузере или гиперссылки. При этом они запускаются через протокол:

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

Код не должен возвращать значений, поэтому разработчики используют void для предотвращения обновления и перехода по ссылке. Заготовка будущего букмарклета выглядит следующим образом:

Внедрение веб-приложений

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

Актуальность

Этот способ предотвратить изменение контента теряет востребованность, т. к. протокол javascript:url уходит в прошлое. Соответственно, void тоже теряет популярность, хотя с его помощью легко создавать букмарклеты.

Одной из причин стало то, что не все пользователи могут взаимодействовать с такими ссылками, если браузер не поддерживает JavaScript.

Заключение

Теперь вы знаете, как работать с оператором void и зачем он нужен. Однако опять же отметим постепенное устаревание этого метода. Если вы хотите стать веб-разработчиком, рекомендуем пройти наш курс. На нем вы получите актуальные знания, которые помогут попасть в IT.

Что такое javascript:void(0);?

Ребят, всем привет.
Есть сайт. Там есть ссылка с href = «javascript:void(0);» . Что это? И как узнать, на что ссылается, и где этот скрипт? Есть доступ ко всем исходникам.

void(0) — это выражение, получающееся приведением типа константы 0 к void . То есть простое ничего не значащее выражение.

Ссылка в таком виде просто ничего не делает. (И это популярная идиома, кстати.) Не исключено, скрипт на странице модифицирует href позже, чтобы ссылка делала что-то более вразумительное; но пока/если этот скрипт не пробежал, ссылка останется такой, как есть.

VladD's user avatar

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

В старых браузерах была возможность создать переменную с именем undefined. Соответственно, чтобы получить значение undefined используется такая конструкция. Конструкции void можно передать любое число/тип переменной — void 123,void [] так же вернет undefined.

Конструкцию типа href = «javascript:void(0);» используют обычно тогда, когда вместе обычного перехода по ссылке должен сработать js скрипт.

Примеры таких случаев — открытие модального окна, отправка/получение данных с помощью ajax или необходимость проверить какие-то данные с помощью js перед тем как совершить переход по этой ссылке.

Чтобы найти скрипт, который срабатывает при клике на эту ссылку стоит посмотреть в режиме инспектора. Пример как это можно сделать, на скриншоте: Пример как увидеть обрабатывающий js скрипт

vjweb's user avatar

href = «javascript:void(0);» добавляют, чтобы при нажатии на ссылку, которая выполняет не свою прямую функцию, страница не прокручивалась вверх, а всё оставалось на месте

What Does void 0 Do in JavaScript?

The void operator in JavaScript evaluates an expression and returns undefined . At first glance, this operator doesn't seem useful, but there are 3 cases where you may see the void operator in practice. Here are the 3 major use cases:

No Overwriting undefined

Surprisingly enough, undefined is a valid variable name in JavaScript. The below script will print out "test" twice.

However, void is an operator. That means, if you try to name a variable void , JavaScript will throw the below error.

Some JavaScript projects prefer void 0 instead of undefined to avoid accidentally creating variables named undefined . There is even an ESLint rule to disallow undefined for this reason.

No-Op for <a> Tags

Another use case for the void operator is to make an <a> tag with a javascript: URI do nothing. An <a> tag is not valid HTML unless it has a name or href property, so javascript: void(0) is a common trick to make an <a> tag render correctly without adding an actual link.

Below is how the above HTML looks:

Immediately Invoked Function Expressions (IIFEs)

To declare a function and execute it in the same statement, you normally would use parentheses to force JavaScript to handle the function declaration as an expression.

You may occasionally see the void operator as an alternative to parentheses. Because void is a unary operator, it tells JavaScript to treat the function declaration as an expression, so the below code prints "Hello, World."

The difference is that a normal IIFE can still return a value, whereas using void for IIFE will always evaluate to undefined .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *