Используем void в JS
CodingНебольшая заметка как и зачем может использоваться ключевое слово void в JavaScript. Слово void — это оператор в JavaScript. Этот оператор позволяет вставлять выражения при этом всегда возвращает undefined.
Void для IIEFE
IIFE (Immediately-invoked function expression) — самовызывающаяся функция. Обычно такие функции описываются так:
(function(arg){ expression })(arg) !function(arg){ expression } (arg) +function(arg){ expression } (arg)
Но так же можно описывать IIFE функции используя void:
void function(arg){ expression } (arg)
Преимущества данной записи в идиоматичности. Есть еще теория, что компилятор такой код обрабатывает быстрее, но это не точно.
Void для истинного Undefined
В JS есть специальный тип undefined, который так же записывается, как и называется и при этом не является ключевым словом. Поэтому undefined можно переопределить и подменить. Зачем это можно сделать — другой вопрос. Но если писать void вместо undefined, то это банально позволяет делать запись немного короче и добавлять идиоматичности, позволяя наполнять смыслом “пустоту”. Вы можете описывать любое выражение после void:
var foo = void 0; let bar = void null; let buz = void 'Комментарий, описывающий что это и зачем. Удобно';
Void и Arrow functions
Если вдруг вам понадобилось использовать стрелочную функцию в качестве колбэк функции, которая ничего не должна возвращать, то можно делать с использованием void. На примере использования jQuery мы могли бы на современный лад писать используя стрелочную функцию:
$(_=>void( ...somedo... )) // хотя проще тогда писать так $(_=>{ ...somedo... })
Это не лучший пример, но он отражает суть.
Void для автоматического очищения временной переменной
Задачка: поменять местами значения переменных. В отличие от чисел, со строками не так много вариантов. Допустим меняем с использованием временной переменной, но мы хотим, чтобы в итоге она была очищена. Можем использовать void для этих целей:
var a = 'abc'; var b = 'cde'; var c = void(c = a, a = b, b = c) console.log(a, b, c); // a = 'cde' // b = 'abc' // c = undefined
Головоломки с void
Ну и небольшой вопрос с подвохом. Что будет и почему? :)
var x = void 'foo' + '!!!';