2016-02-20 21 views
7

Trovo questa notazione ovunque in Webpack generato librerie, ma io non lo capisco:Che cosa significa questa sintassi javascript? (0, _parseKey2.default) (qualcosa)

var a = (0, _parseKey2.default)(something) 

ciò che fa il (0, _parseKey2.default) stand per? Non ricordo di aver visto quelle espressioni separate tra parentesi tra parentesi che nei parametri di funzione, quindi forse mi manca semplicemente qualcosa di semplice.

Grazie per il vostro aiuto.

+2

Questa è la [operatore virgola] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/operatori/Comma_Operator). Non capisco perché il webpack stia generando cose del genere, ma l'ho visto anche io. –

risposta

17

Questo è per dare _parseKey2.default corretto this (o, piuttosto, no this affatto), vale a dire chiamarlo come una funzione ordinaria, non un metodo. Si consideri:

var p = { 
    f : function() { 
     console.log(this) 
    }, 
    x : "foo" 
}; 

p.f();  // { f: ... x: foo } 
(p.f)(); // { f: ... x: foo } 
(0, p.f)(); // implicit global this 

L'espressione virgola è un modo più conciso per fare questo:

var unbound = p.f; 
unbound(); 
+6

Altro in [questo articolo] (http://www.2ality.com/2015/12/references.html). –

Problemi correlati