<script type="text/javascript"> //闭包(closure):内层函数能够引用存在于包围它的函数内的变量,即便外层函数的执行已经结束 //注意内层函数引用的外层函数内的变量是外层函数执行结束后的最终值 test(1); function test(a) { //外层函数 alert(a+' 外层函数开始执行'); setTimeout(function(){//内层函数 alert(a+' 虽然外层函数执行完毕,可是内层函数依然能够引用外层函数内的变量'); },5000); alert(a+' 外层函数执行完毕'); a +=1; } alert('外层函数确实执行完毕');</script><script type="text/javascript"> //一个有趣的例子 function add(b) { return function (c) { return b + c; } } var test = add(1); alert(test(1));</script>