Ho visto l'esempio di seguito spiegato su questo site e ho pensato che entrambe le risposte sarebbero 20 e non il 10 che viene restituito. Ha scritto che sia la virgola che l'assegnazione restituiscono un valore, non un riferimento. Non capisco cosa significhi.Perché l'operatore di assegnazione restituisce un valore e non un riferimento?
Lo capisco in relazione al passaggio di variabili in funzioni o metodi in cui i tipi primitivi vengono passati per valore e oggetti per riferimento, ma non sono sicuro di come si applica in questo caso.
Capisco anche il contesto e il valore di "this" (dopo l'aiuto di stackoverflow) ma ho pensato che in entrambi i casi lo avrei ancora invocato come metodo, foo.bar() che vorrebbe dire foo è il contesto ma sembra che entrambi risultino in una funzione call bar().
Perché è questo e cosa significa tutto questo?
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)()' è così ** ** andando sulla mia lista di domande di intervista! ^.^ –
@ Ben: Non '(foo.bar, foo.bar)()'? ;-) Voglio dire, se vuoi esoterico ... –
@ Ben - Fammi sapere per chi lavori, quindi non commetto l'errore di venire per un'intervista :) – screenm0nkey