Непонимание закрытий JavaScript

Я новичок в JavaScript, и у меня проблемы с пониманием этого кода:

function addProperty(o) {
   var value;

   o["get"] = function()  { return value; }
   o["set"] = function(v) { value = v; }
}

var a = {};
addProperty(a);
var b = {};
addProperty(b);

a.set(4);
b.set(5);
print("a is " + a.get() + "; b is " + b.get());

Это печатает (в v8 / d8) a равно 4; b равно 5 . Если я закомментирую строку var value; , я получу a равно 5; b равно 5 . Где находится объект «значение» и почему их два? Спасибо.

8
задан EML 4 January 2012 в 15:01
поделиться