javascript的闭包与回调
回调函数的使用时机
-
资源加载: 动态加载js文件后执行回调,加载iframe后执行回调,ajax操作回调,图片加载完成执行回调.AJAX等等
-
DOM事件及Node.js事件基于回调机制(Node.js回调可能会出现多层回调嵌套的问题)
-
setTimeout的延迟时间为0,这个hack经常被用到,setTimeout调用的函数其实就是一个callback的体现
-
链式调用: 链式调用的时候,在赋值器(setter)方法中(或者本身没有返回值的方法中)很容易实现链式调用,而取值器(getter)相对来说不好实现链式调用,因为需要取值器返回你需要的数据而不是this指针,如果要实现链式方法,可以用回调函数来实现
-
setTimeout \setInterval的函数调用得到其返回值.由于两个函数都是一步的,即:他们的调用时序和程序的主流程是相对独立的,所以没有办法在主体里面等待他们的返回值,他们被打开的时候程序也不会停下来等待,否则也就失去了setTimeout及setInterval的意义了,所以用return已经没有意义,只能使用callback.
callback的意义在于将timer执行的结果通知给代理函数进行及时处理.