摘要: 一个用来测试“你是否理解JS”的测试是这样的:for (var i = 1; i <= 3; i++) { setTimeout(function() { console.log(i); }, 0);}结果是444点解? 因为setTimeout是个异步函数,就算timeout设置为0--setTimeout里的函数也只能在for循环结束后才能运行。当for循环结束后,i就成了4. 而setTimeout里面的函数就是用把这个i打印出来,结果当然就是打印3个4了。为了传递i的每个值,你不得不把for循环里的语句封转在一个函数中,然后把i传递给它 (这就是JS里有名的技巧:匿名函数wrap 阅读全文
posted @ 2011-11-30 18:00 象牛 阅读(183) 评论(0) 推荐(0) 编辑