Esse tipo de código geralmente é gerado por transpilers (como Babel), a fim de converter o JavaScript moderno - que usa as adições mais recentes à especificação - em uma versão JavaScript com suporte mais amplo.
Aqui está um exemplo em que esse padrão de transpilação ocorre:
Digamos que tenhamos esse código original antes da transpilação:
import {myfunc} from "mymodule";
myfunc();
Para criar esse código compatível com ES5, você pode fazer o seguinte:
"use strict";
var mymodule = require("mymodule");
mymodule.myfunc();
Mas aqui nós executaríamos myfunccom mymoduleo thisvalor, o que não está acontecendo no código original. E, embora isso nem sempre seja um problema, é melhor garantir que a função se comporte da mesma forma que na versão original , mesmo que essa função use uma thisreferência - quão incomum ou mesmo inútil esse uso de thisin myfuncpode ser ( porque também na versão original seria undefined).
Por exemplo, se o código original this.memberFun()gerar um erro devido a uma referência na função, ele também lançará a versão transpilada.
Portanto, o operador de vírgula é usado para se livrar dessa diferença:
(0, mymodule.myfunc)();
É verdade que, no código que você mesmo escreve, você nunca teria um bom caso de uso para esse padrão, pois não o usaria thisem myfuncprimeiro lugar.
bindmétodo vincula. Aqui é apenas uma mudança de contexto. Você não pode cortar ou perder a encadernação (o vínculo criado porbind).