Зачем такая конструкция?
Ниже в примере реализован, на сколько я понимаю, IIFE:
var myVar = function() {
(0, _iterator.each)(myArray, function(index, column) {
//...some_iteration_code...
})
};
Вопрос: Зачем 0 в первой скобке?
Ответы (1 шт):
Это называется непрямой вызов функции или метода (indirect function call, можно погуглить для подробностей). Если вы просто заключите метод в скобки: (_iterator.each)(), скобки будут проигнорированы и получится обычный вызов метода, в котором this будет равно _iterator. Иногда нужно оторвать функцию от контекста вызова, и тогда в скобках функцию ставят после любого значения через запятую (это может быть 0 как символ того, что первый операнд до запятой не важен), в таком случае мы получаем последнее значение после запятой, ссылку на функцию, оторванную от контекста её вызова.
То есть (0, _iterator.each)() можно приравнять к такому виду намеренной потери контекста вызова:
const func = _iterator.each;
func();
И это не IIFE (Immediately Invoked Function Expression), потому что Function Expression тут как раз нет. Хотя из-за сокращения шагов тут тоже есть "Immediately Invoked" и потому, наверное, срабатывает ассоциация.
Использоваться это может по-разному, в вашем случае нужно смотреть документацию или комментарии к коду.