Closures Ex 3

by Shaun Luttin

HTML

Values over Time
<pre>
    age = 2 
    x = 2
    tmp = 3
    y = 10
    alert = x + y + tmp = 15
    x.memb = 1
    alert = x.memb = 1
</pre>

JavaScript

function foo(x) {
  var tmp = 3;
  return function (y) {
    alert(x + y + tmp);
    x.memb = x.memb ? x.memb + 1 : 1;
    alert(x.memb);
  }
}
var age = new Number(2); // an object not a literal, thus it is referenced not copied
var bar = foo(age); // bar is now a closure referencing age.
bar(10);
bar(10);