Чому ця відповідь все ще отримує позитивні голоси?
Відповідно до відповіді Mikaël Mayer , це вже не проблема, і моя відповідь застаріла ( go()
тепер повертається 30
після виходу з консолі). Це було виправлено в липні 2013 року, згідно з повідомленням про помилки, зв’язаному вище в коментарі Габріельмальді . Мене насторожує, що я все ще отримую голоси проти - змушує думати, що голосуючий не розуміє ні питання, ні моєї відповіді.
Я залишу мій початковий відповідь тут з історичних причин, але йти upvote відповідь Mikael в замість .
Фокус у тому, що ви не можете безпосередньо змінити локальну змінну, але ви можете змінити властивості об’єкта. Ви також можете змінити значення глобальної змінної:
var g_n = 0;
function go()
{
var n = 0;
var o = { n: 0 };
return g_n + n + o.n;
}
консоль:
> g_n = 10
10
> g_n
10
> n = 10
10
> n
0
> o.n = 10
10
> o.n
10
Перевірте результат go()
після встановлення точки зупинку та запуску цих викликів у консолі, і ви виявите, що результат дорівнює 20, а не 0 (але, на жаль, не 30).
modeline
береться?