先从一个小题目开始: 以下代码的输出结果是?
// 1 function test1 () { console.log(1) }; setTimeout(test1, 1000); // T1-1setTimeout(test1(), 1000); // T1-2 setTimeout(console.log(1.1), 1000); // T1-3
下面还有加强版:
// 2 function test2(value) { value = value || 'default 2'; console.log(value); } setTimeout(test2, 1000, 2.1); // T2-1 setTimeout(test2(), 1000, 2.2); // T2-2 setTimeout(test2(2.3), 1000, 2.31); // T2-3 // 3 function test3(value) { value = value || 'default 3'; console.log(value); return test3; } setTimeout(test3, 1000, 3.1); // T3-1 setTimeout(test3(), 1000, 3.2); // T3-2 setTimeout(test3(3.3), 1000, 3.31) // T3-3 // 4 for(var i = 0; i < 5; i++) { // T4-1 console.log(i); } for(var i = 0; i < 5; i++) { // T4-2 setTimeout(function() { console.log(i); }, 1000 * i); } for(var i = 0; i < 5; i++) { // T4-3 setTimeout(function(i) { console.log(i); }, 1000 * i); } for(var i = 0; i < 5; i++) { // T4-4 (function(i) { setTimeout(function() { console.log(i); }, i * 1000); })(i); } for(var i = 0; i < 5; i++) { // T4-5 (function() { setTimeout(function() { console.log(i); }, i * 1000); })(i); } for(var i = 0; i < 5; i++) { // T4-6 setTimeout((function(i) { console.log(i); })(i), i * 1000); } // 5 function someLoop(){ var tag = true; var temp = 0; setTimeout(function(){ tag = !tag; console.log(tag) }, 1000); while(tag) { temp++; } } someLoop(); // T5-1