Цей тип коду, як правило, генерується транспіляторами (як Babel), щоб перетворити сучасний JavaScript - для використання останніх доповнень до специфікації - у більш широку підтримку версії JavaScript.
Ось приклад, коли ця картина транспіляції відбувається:
Скажімо, у нас є цей оригінальний код перед транспіляцією:
import {myfunc} from "mymodule";
myfunc();
Щоб зробити цей сумісний з ES5 код, ви можете зробити це:
"use strict";
var mymodule = require("mymodule");
mymodule.myfunc();
Але тут ми повинні виконати myfuncз mymoduleяк thisзначення, яке не відбувається в вихідному коді. І хоча це не завжди може бути проблема, то краще , щоб функція поводиться так само , як це було б в оригінальній версії , навіть якщо ця функція буде використовувати thisпосилання - як незвичайні або навіть марно , що використання thisв myfuncможе бути ( бо і в оригінальній версії це було б undefined).
Так, наприклад, якщо оригінальний код this.memberFun()видасть помилку через посилання у функції, він також буде передаватись у перекладеній версії.
Отже, це те, що оператор з комами використовується для позбавлення від цієї різниці:
(0, mymodule.myfunc)();
Зрозуміло, що в коді, який ви самі пишете, ви ніколи не матимете гарного випадку використання цього шаблону, як ви б не використовували thisв myfuncпершу чергу.
bindметод зв’язує. Тут це лише зміна контексту. Ви не можете перервати або втратити зв'язок (облігація, створена компанієюbind).