1. What about variables in closures?
function makeCounter() { var i = 0; console.log(i); return function(){ console.log(++i); console.log(i); }; } // Remember: `counter` and `counter2` both have their own variable `i` var counter = makeCounter (); counter();//1 counter();//2 makeCounter(); var counter2 = makeCounter (); counter2();//1 counter2();//2
2. What is the order of asynchronous execution?
for (var i = 0; i < 5; ++i) { setTimeout(function () { console.log(i + ' '); }, 100); } for (var j = 5; j < 10; ++j) { setTimeout((function (num) { console.log(num + ' '); })(j), 100); } for (var k = 10; k <15; k ++) { (function(num){ setTimeout(function () { console.log(num + ' '); }, 100); })(k); } for (var n = 15; n < 20; n++) { add(n); } function add(num){ setTimeout(function(){ console.log(num); });The output results are 5, 6, 7, 8, 9, 15, 16, 17, 18, 19, 5, 5, 5, 5, 5, 10, 11, 12, 13, 14