O operador vírgula avalia cada um de seus operandos (da esquerda para a direita) e retorna o valor do último operando.
console.log((1, 2)); // Returns 2 in console
console.log((a = b = 3, c = 4)); // Returns 4 in console
Então, vamos ver um exemplo:
var a = {
foo: function() {
console.log(this === window);
}
};
a.foo(); // Returns 'false' in console
(0, a.foo)(); // Returns 'true' in console
Agora, no foométodo, thisé igual a a(porque fooestá anexado aa ). Portanto, se você ligar a.foo() diretamente, ele registraráfalse no console.
Mas, se você fosse chamado (0, a.foo)(). A expressão (0, a.foo)avaliará cada um de seus operandos (da esquerda para a direita) e retornará o valor do último operando. Em outras palavras, (0, a.foo)é equivalente a
function() {
console.log(this === window);
}
Uma vez que esta função não está mais ligada a nada, é this é o objeto global window. É por isso que ele faz logon trueno console quando liga (0, a.foo)().
_b.a.call()para deixar a intenção clara.