Este tipo de código generalmente es generado por transpiladores (como Babel), para convertir JavaScript moderno, que utiliza las adiciones más recientes a la especificación, a una versión de JavaScript que es más compatible.
Aquí hay un ejemplo donde ocurre este patrón de transpilación:
Digamos que tenemos este código original antes de la transpilación:
import {myfunc} from "mymodule";
myfunc();
Para hacer este código compatible con ES5, puede hacer esto:
"use strict";
var mymodule = require("mymodule");
mymodule.myfunc();
Pero aquí debemos ejecutar myfunccon mymodulecomo thisvalor, que no está ocurriendo en el código original. Y aunque eso no siempre sea un problema, es mejor asegurarse de que la función se comporte como lo haría en la versión original , incluso si esa función usara una thisreferencia: cuán inusual o incluso inútil podría ser ese uso de thisin myfunc( porque también en la versión original sería undefined).
Entonces, por ejemplo, si el código original arrojaría un error debido a una this.memberFun()referencia en la función, también arrojará la versión transpilada.
Entonces es donde se usa el operador de coma para deshacerse de esa diferencia:
(0, mymodule.myfunc)();
De acuerdo, en el código que escribes tú mismo, nunca tendrías un buen caso de uso para este patrón, ya que no lo usarías thisen myfuncprimer lugar.
bindmétodo vincula. Aquí es solo un cambio de contexto. No puede cortar ni perder la encuadernación (el vínculo creado porbind).