JavaScript Void 0 пояснюється всього за 5 хвилин

JavaScript — це мова сценаріїв, яку можна використовувати як для зовнішньої, так і для внутрішньої розробки. За допомогою цієї мови програмування ви можете створювати вміст, який динамічно оновлюється, анімувати зображення та керувати мультимедіа.

JavaScript має сотні фреймворків і бібліотек, а також є найбільш використовуваною мовою програмування, за даними Statista.

У JavaScript є різні оператори, створені для виконання різних ролей. У цій статті я поясню, що таке JavaScript Void (0), його важливість, варіанти використання та переваги, потенційні ризики безпеки та його альтернативи.

Що таке оператор Void (0)?

У наших словниках void означає «недійсний» або «повністю порожній». Void (0) — це оператор, який перевіряє задане значення та повертає undefined. Функція вважається недійсною, якщо вона нічого не повертає. Оператор void (0) можна використовувати в багатьох сферах.

Наприклад, JavaScript може повертати невизначене значення, коли ви натискаєте тег прив’язки. Коли це станеться, це означає, що сторінка, яку ви натискаєте, не оновлюватиметься, і з нею нічого не станеться.

Важливість використання оператора Void і 0 як операнда

Оператор void можна використовувати з будь-яким виразом. Однак у JavaScript він здебільшого використовується з 0 як операнд. Ось кілька випадків використання оператора Void (0):

Заборонити навігацію

У звичайних випадках, якщо ви натиснете посилання, воно, ймовірно, переведе вас на нову сторінку. Ми можемо створити проект, щоб продемонструвати, як він працює. У моєму проекті буде два файли: index.html і nextPage.html.

Ви можете додати цей код до різних файлів наступним чином:

Index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Home Page</title>
</head>
<body>
    <h1>Welcome to the Home Page</h1>
    <a href="https://wilku.top/javascript-void-0-explained-in-just-5-minutes/nextPage.html">Go to Next Page (No void operator)</a>
    <script src="script.js"></script>
</body>
</html>
nextPage.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Next Page</title>
</head>
<body>
    <h1>You are on the Next Page</h1>
    <a href="index.html">Go back to Home Page (No void operator)</a>
    <script src="script.js"></script>
</body>
</html>

Перегляньте це відео:

Як бачите, ви можете перейти від «Домашньої» до «Наступної сторінки», натиснувши кнопку.

Тепер ми можемо ввести оператор void (0), який блокує навігацію. Додайте цей код до index.html:

<!-- With void operator -->
<a href="https://wilku.top/javascript-void-0-explained-in-just-5-minutes/javascript:void(0);" onclick="doSomething()">Click me</a>
<script>
  function doSomething() {
    alert("Button clicked, but no navigation!");
  }
</script><!-- With void operator -->
<a href="https://wilku.top/javascript-void-0-explained-in-just-5-minutes/javascript:void(0);" onclick="doSomething()">Click me</a>
<script>
  function doSomething() {
    alert("Button clicked, but no navigation!");
  }
</script>

Перегляньте це відео, коли ми натискаємо кнопку «Натисни мене»:

  Забезпечте свою безпеку в Інтернеті за допомогою цих 10 розширень безпеки Chrome

Ви бачите, що після натискання кнопки з’являється сповіщення «Кнопку натиснуто, але навігації немає!» з’являється, але ми не переходимо до наступної сторінки.

Самовиконувані анонімні функції

Самовиконувана анонімна функція або вираз негайно викликаної функції (IIFE) — це функція, яка визначається та виконується після створення. Такі функції призначені для створення приватної області для змінних, що запобігає забрудненню цими функціями глобальної області.

Подивіться на цей код:

void function() {
    // Function to calculate the sum of numbers from 1 to n
    const calculateSum = () => {
        let sum = 0;
        for (let i = 1; i <= 10; i++) {
            sum += i;
        }
        return sum;
    };
    // Call the function and log the result to the console
    const result = calculateSum();
    console.log("The sum of numbers from 1 to 10 is:", result);
}();

Це самовиконувана функція, яка додає всі числа від 1 до 10 і відображає результати після виконання коду.

Коли ви запустите код, результатом буде: «Сума чисел від 1 до 10 дорівнює: 55».

Як поєднати JavaScript і Void 0

Оператор void не є винятковим для JavaScript, оскільки він доступний в інших мовах програмування, таких як C і C++. Однак використання цього оператора відрізняється від однієї мови до іншої. Наприклад, void — це тип даних у мовах програмування C і C++, а не оператор.

JavaScript використовує ключове слово “void” із нулем. Ви можете використовувати оператор void (), щоб запобігти поведінці за замовчуванням, наприклад переходу браузера до наступної URL-адреси. Це чудовий приклад блоку коду, який поєднує JavaScript з оператором void ().

<a href="https://wilku.top/javascript-void-0-explained-in-just-5-minutes/javascript:void(0);" onclick="myFunction()">Click me</a>

Ви також можете використовувати оператор void (), щоб отримати невизначене примітивне значення. Подивіться на цей блок коду:

const result = void(0);const result = void(0);

Коли ви запустите його, ви отримаєте undefined.

Які переваги Void (0)?

У JavaScript ми використовуємо оператор void (), щоб створити значення «void» або «undefined». Ось деякі з переваг використання цього оператора у вашому коді:

  • Заборонити навігацію: ми можемо використовувати оператор void(0) в атрибуті href, якщо хочемо заборонити браузерам переходити на нову сторінку, коли ми натискаємо посилання чи кнопку. Цей блок коду ілюструє, як це працює:
<a href="https://wilku.top/javascript-void-0-explained-in-just-5-minutes/javascript:void(0);" onclick="myFunction();">Click me</a>
  • Повертайте невизначені значення з функцій: як розробник, ви можете використовувати оператор void (), щоб явно повертати невизначені значення, якщо вам потрібна послідовність коду у вашій програмі. Перегляньте цей блок коду:
function myFunction() {
    // do something
    return void(0);
}
  • Уникайте призначення ‘undefined’: Ви можете використовувати void () таким чином, що ‘undefined’ буде еквівалентним ‘result’. Ви також можете використовувати його як стильовий вибір. Цей блок коду показує, як можна досягти цього:
let result = void(0);
  • Зробіть код більш читабельним: читабельність коду – це не те, що ми повинні ігнорувати, особливо коли маємо справу з великими програмами. Ви можете використовувати void(), якщо ви хочете явно відкинути значення, що повертається, і повідомити іншим розробникам, що функція нічого не повертатиме. Цей блок коду показує, як можна досягти цього:
function myFunction() {
  // Do something...
  return void(0);
}

Потенційні ризики безпеки через Void (0)

Незважаючи на те, що void (0) корисний у різних випадках у JavaScript, він також може виявитися небезпечним, якщо його використовувати неправильно. Ось деякі з випадків, коли void (0) може використовуватися зловмисно:

  • Уразливості ін’єкцій сценаріїв. Існують потенційні ризики атак ін’єкцій сценаріїв, якщо значення, передане оператору void (), не оброблено та перевірено. Хорошим прикладом є коли це значення динамічно генерується на основі введення користувача.
<a href="https://wilku.top/javascript-void-0-explained-in-just-5-minutes/javascript:void(alert("This could be malicious!'));">Click me</a>

Такий блок коду дозволяє користувачам вводити шкідливий код.

  • Клікджекінг: зловмисники можуть використовувати оператори void для створення прозорих/невидимих ​​шарів над веб-сторінкою. Такі зловмисники потім використовуватимуть ці шари, щоб обманом змусити користувачів натиснути шкідливі посилання та кнопки.
  • Можна використовувати для обходу політики безпеки вмісту (CSP): більшість власників веб-сайтів використовують CSP для запобігання атакам міжсайтових сценаріїв (XSS). Ви можете використовувати CSP, щоб обмежити характер сценаріїв і ресурсів, які мають завантажувати ваші веб-сторінки. Однак використання оператора void () може конфліктувати з такими заходами, оскільки воно завантажує навіть сценарії, заборонені політикою безпеки вмісту.
  Як заблокувати презентацію PowerPoint від редагування

Альтернативи void (0)

Технології постійно змінюються, як і програмування. Деякі люди вважають void (0) застарілим оператором. Ось деякі з альтернатив, які використовують сучасні розробники:

  • Використовуйте event.preventDefault(): ви можете використовувати event.preventDefault(), щоб запобігти дії події. Така заява може перешкодити користувачам подати форму або перейти до наступної сторінки.

Ці фрагменти коду показують, як використовувати event.preventDefault:

#html
<a href="#" onclick="event.preventDefault()">My Link</a>
#JavaScript
document.querySelector('a').addEventListener('click', event => event.preventDefault());
  • Використовуйте # як значення href: різні сторінки програми пов’язані між собою для зручності навігації. Використання # як href гарантує, що користувачі залишаються на тій самій сторінці. Ви можете використовувати цей підхід разом із event.prevetDefault(), щоб запобігти прокручуванню веб-сторінки вгору. Ось як ви можете досягти цього:
#html

<a href="#">My Link</a>
#JavaScript
document.querySelector('a').addEventListener('click', event => {
  event.preventDefault();
  window.scrollTo(0, 0);
});
  • Використовуйте значення null: ви можете повернути значення null замість undefined. Ось як ви можете досягти цього:
let result = null;

поширені запитання

Що таке JavaScript?

  7 найкращих програм для аутизму для розвитку навичок і мовлення

JavaScript — це мова програмування, яка в основному використовується у розробці інтерфейсу. Однак ця мова використовується у внутрішній розробці з фреймворками, такими як Node.js. JavaScript здебільшого використовується з іншими зовнішніми технологіями, такими як CSS і HTML, щоб додати інтерактивність веб-сторінок.

Що таке JavaScript Void 0?

JavaScript Void 0 — це оператор, який використовується для запобігання дії за замовчуванням. Наприклад, ви можете використовувати void (0), щоб запобігти навігації, коли користувач натискає посилання або кнопку. Коли натискається посилання з коду з void (0), браузер намагається перейти, але результат оцінюється як undefined.

Чи існують альтернативи void (0)?

Так. Більшість сучасних розробників використовують слухачі подій замість void (0) у своєму коді. Цей підхід полегшує обробку різних функцій і запобігає поведінці за замовчуванням у вихідних кодах.

Чи безпечно використовувати void (0)?

Ви можете використовувати void (0), щоб запобігти поведінці за замовчуванням і для самовиконуваних функцій. Однак void (0) може бути небезпечним, якщо ви не використовуєте його свідомо у своєму коді. Наприклад, такий оператор може полегшити впровадження шкідливого коду, якщо його застосувати до введених користувачем даних.

Висновок

JavaScript — це дуже широка мова програмування, і вам може знадобитися деякий час, перш ніж ви освоїте більшість її концепцій.

Ми навчили, що таке оператор void (0), його важливість і випадки використання, а також його альтернативи. Тепер ви також розумієте, як поєднати JavaScript і void(0) потенційні ризики, з якими ви можете зіткнутися, коли використовуєте цей оператор.
Ви також можете дослідити деякі найкращі середовища виконання JavaScript для кращого виконання коду.