Cero como primer argumento en IIFE [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Por qué Babel reescribe la llamada a la función importada a (0, fn) (...)? 2 respuestas

Enbabeljs v6.5.1,

class Foo {}

compila a

"use strict";

var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");

var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var Foo = function Foo() {
  (0, _classCallCheck3.default)(this, Foo);
};

¿Cuál es el punto de la0 en(0, _classCallCheck3.default)(this, Foo);?

En líneababeljs repl, que probablemente tiene una diferenciababeljs versión, esa línea es simplemente_classCallCheck(this, Foo);, y parecen hacer lo mismo. ¿Cuál es la diferencia entre estas dos declaraciones?

Respuestas a la pregunta(1)

Su respuesta a la pregunta