Dentro de la biblioteca react-redux, en el archivo que define useSelector, encontré múltiples instancias de operadores de coma que se usan con IIFE de la siguiente manera:
var _useReducer = (0, _react.useReducer)(function (s) { return s + 1; }, 0), forceRender = _useReducer[1]; var subscription = (0, _react.useMemo)(function () { return (0, _Subscription.createSubscription)(store, contextSub); }, [store, contextSub]); var latestSubscriptionCallbackError = (0, _react.useRef)(); var latestSelector = (0, _react.useRef)(); var latestStoreState = (0, _react.useRef)(); var latestSelectedState = (0, _react.useRef)();No puedo entender ni encontrar ninguna referencia de por qué están usando 0 dentro de los IIFE.
En el contexto del operador de coma, se evalúa cada valor y solo se asigna la última expresión a la variable.
A mis ojos ya mi entender, los 0 no tienen sentido. ¿Alguien puede explicarlos?
La razón por la que hace esto es que llamar a una función desde un operador de coma coloca la función llamada en el contexto global. (0, function)() el cero es solo una convención.
Si no se llamara con este método, this (el contexto) sería el ámbito local. A menudo encuentra este comportamiento en código transpilado como babel o TypeScript.