Dlaczego ta odpowiedź wciąż jest pozytywna?
Zgodnie z odpowiedzią Mikaëla Mayera , to już nie jest problem, a moja odpowiedź jest przestarzała ( go()
teraz powraca 30
po pomieszaniu z konsolą). Zostało to naprawione w lipcu 2013, zgodnie z raportem o błędzie , do którego link znajduje się powyżej w komentarzu Gabrielmaldi . Niepokoi mnie, że wciąż otrzymuję głosy za - sprawia, że myślę, że osoba popierająca nie rozumie ani pytania, ani mojej odpowiedzi.
Zostawię tutaj moją pierwotną odpowiedź ze względów historycznych, ale zamiast tego zagłosuj na odpowiedź Mikaëla .
Sztuczka polega na tym, że nie możesz bezpośrednio zmienić zmiennej lokalnej, ale możesz zmodyfikować właściwości obiektu. Możesz także zmodyfikować wartość zmiennej globalnej:
var g_n = 0;
function go()
{
var n = 0;
var o = { n: 0 };
return g_n + n + o.n;
}
konsola:
> g_n = 10
10
> g_n
10
> n = 10
10
> n
0
> o.n = 10
10
> o.n
10
Sprawdź wynik go()
po ustawieniu punktu przerwania i uruchomieniu tych wywołań w konsoli, a zobaczysz, że wynik to 20, a nie 0 (ale niestety nie 30).
modeline
pochodzi?