Vi el ejemplo a continuación explicado en este site y pensé que ambas respuestas serían 20 y no las 10 que se devuelven. Escribió que tanto la coma como la asignación devuelven un valor, no una referencia. No entiendo muy bien lo que eso significa.¿Por qué el operador de asignación devuelve un valor y no una referencia?
Lo entiendo en relación con pasar variables a funciones o métodos, es decir, los tipos primitivos se pasan por valor y objetos por referencia, pero no estoy seguro de cómo se aplica en este caso.
También entiendo el contexto y el valor de 'esto' (después de la ayuda de stackoverflow) pero pensé que en ambos casos seguiría invocando como método, foo.bar() lo que significaría que foo es el contexto pero parece que ambos dan como resultado una función llamada barra().
¿Por qué es eso y qué significa todo esto?
var x = 10;
var foo = {
x: 20,
bar: function() {return this.x;}
};
(foo.bar = foo.bar)();//returns 10
(foo.bar, foo.bar)();//returns 10
'(foo.bar = foo.bar)()' es tan ** ** yendo a mi lista de preguntas de la entrevista! ^.^ –
@Ben: Not '(foo.bar, foo.bar)()'? ;-) Es decir, si quieres algo esotérico ... –
@Ben - Avísame para quién trabajas, así que no cometas el error de venir a una entrevista :) – screenm0nkey