Zero como primeiro argumento no IIFE [duplicado]

Esta pergunta já tem uma resposta aqui:

Por que babel reescreve a chamada de função importada para (0, fn) (…)? 2 respostas

Nobabeljs v6.5.1,

class Foo {}

compila para

"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);
};

Qual é o objetivo do0 no(0, _classCallCheck3.default)(this, Foo);?

No onlinebabeljs repl, que provavelmente tem um diferentebabeljs versão, essa linha é simplesmente_classCallCheck(this, Foo);, e eles parecem fazer a mesma coisa. Qual a diferença entre essas duas afirmações?

questionAnswers(1)

yourAnswerToTheQuestion