One, add (2) (3) Summation function (closure)
1 function Add (x) {2 var a = x; 3 return function (b) {4 sum = a + b; 5 console.log (sum); 6 }7}8 Add (2) (3); // 5
Second, the variable promotion
1 //first Case2 3 varA = 100;//Global Variables4 5 functionTest () {6alert (a);//Search up Global variables-->1007A = 10;//no var modifier, so A is a global variable, overwriting the previous global variable8alert (a);//-->109 }Ten OneTest ();
1 // The second case 2 var a = +; 3 function Test () {4 alert (a); // variable lift, undefined5 var a = ten; 6 alert (a); // Ten 7 }8 test ();
1 //The third case2 varA = 100;3 functionTest () {4alert (a);//variable promotion, undefined5A = 10;6alert (a);//Ten7 varA;8alert (a);//Ten9 }TenTest ();
Third, look at the code, to output the results
1 for ( var i = 1; I <= 3; I++ 2 setTimeout (function () { 3 Console.log (i); 4 },0); 5 }; 6 // 4 4 4
1 for (var i = 1; I <= 3; i++) {2 setTimeout (function(a) {3 Console.log (a); 4 }) (i), 0); 5 }; 6 // 1 2 3
Or
1 for ( var i = 0; I < 3; I++ 2 setTimeout (function () { 3 Console.log (i); 4 },0); 5 Console.log (i); 6 } 7 // 0 1 2 3 3 3
1 for ( var i = 0; I < 3; I++ 2 setTimeout ((function (n) { 3 Console.log (n); 4 }) (i), 0 5 Console.log (i); 6 } 7 // 0 0 1 1 2 2
1 for (var i = 0; i < 3; i++) {2 setTimeout (functionreturnfunction< /c8>() {3 console.log (n); 4 };}) (i), 0); 5 Console.log (i); 6 }7// 0 1 2 0 1 2
JavaScript closures, variable promotion