leaflet.js Lectura 's, me encontré con un método con esta línea que no entiendo plenamente:Asignaciones múltiples var a = b = b || {} En código javascript
var events = this._leaflet_events = this._leaflet_events || {};
que se puede simplificar como
var a = b = b || {};
De lo que entiendo esta instrucción es una asignación múltiple zurdo que es asociativa derecha lo que significa que en primer lugar, se ejecutará JavaScript
b = b || {} //if b exists, returns b, else return an empty object
, a continuación,
a = b // returns the output of the preceding instruction
Lo que no tiene sentido para mí. Por qué no escribir en su lugar:
a = b || {};
contexto completo:
addEventListener: function(/*string*/ type, /*function */ fn, /*(optional) object*/ context){
var events = this._leaflet_events = this._leaflet_events || {};
events[type] = events[type] || {};
events[type].push({
action: fn,
context: context || this
});
return this;
}
sospecho un truco de referencia, puesto que no veo cómo this._leaflet_events
es modificado por el método de lo contrario.
Pensando en ello, la escritura var a = b = b || {}
es en realidad ser un truco para asignar var a
una referencia a b
, no importa si b
se define o no. Modificar a
ahora modifica b
.
Volver al Folleto. Con
var events = this._leaflet_events = this._leaflet_events || {};
this._leaflet_events
ya sea que exista o se inicializa a {}
. events
se asigna this._leaflet_events
por referencia. El valor de la referencia podría ser {}
pero sigue siendo this._leaflet_events
que se está modificando al modificar events
.
Por el contrario, la escritura
var events = this._leaflet_events || {};
sería un error, ya que si no se define this._leaflet_events
, events
ahora apuntará a un objeto de nueva creación cuyo valor será {}
. La modificación de events
cambiará el nuevo objeto pero no va a cambiar el valor this._leaflet_events
's.
valores appearent mismos, diferentes referencias. Aquí está la cosa.
FYI, 'this._leaflet_events' es diferente de' this._leaflet. eventos'. –
Mi error, edité la publicación – cedricbellet