gf1.set and gf1.get were created within the same call to makeAccessors, so they see the same x. gf1.set and gf2.set were created within different calls, so they see different x's.

Results

function makeAccessors() {
    var x;
    return {get: function() { return x; },
            set: function(y) { x = y; }}
}
var gf1 = makeAccessors(); var gf2 = makeAccessors(); gf1.set(10); gf2.set(20); log(gf1.get()); log(gf2.get());